lindera-wasm 3.0.0

A morphological analysis library for WebAssembly.
Documentation
use std::fmt;

use wasm_bindgen::prelude::*;

/// Error type for Lindera operations.
#[wasm_bindgen(js_name = "LinderaError")]
#[derive(Debug, Clone)]
pub struct JsLinderaError {
    #[wasm_bindgen(getter_with_clone)]
    pub message: String,
}

impl fmt::Display for JsLinderaError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}", self.message)
    }
}

#[wasm_bindgen]
impl JsLinderaError {
    #[wasm_bindgen(constructor)]
    pub fn new(message: String) -> Self {
        JsLinderaError { message }
    }

    #[wasm_bindgen(js_name = "toString")]
    pub fn js_to_string(&self) -> String {
        self.to_string()
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[cfg(target_arch = "wasm32")]
    use wasm_bindgen_test::wasm_bindgen_test;

    #[cfg(target_arch = "wasm32")]
    #[wasm_bindgen_test]
    fn test_lindera_error_wasm() {
        let error = JsLinderaError::new("test error".to_string());

        assert_eq!(error.message, "test error");
        assert_eq!(error.js_to_string(), "test error");
    }

    #[test]
    fn test_lindera_error_new() {
        let error = JsLinderaError::new("test error".to_string());

        assert_eq!(error.message, "test error");
    }

    #[test]
    fn test_lindera_error_display() {
        let error = JsLinderaError::new("something went wrong".to_string());

        assert_eq!(format!("{}", error), "something went wrong");
        assert_eq!(error.js_to_string(), "something went wrong");
    }

    #[test]
    fn test_lindera_error_empty_message() {
        let error = JsLinderaError::new(String::new());

        assert_eq!(error.message, "");
        assert_eq!(error.js_to_string(), "");
    }
}