Skip to main content

lindera_wasm/
error.rs

1use std::fmt;
2
3use wasm_bindgen::prelude::*;
4
5/// Error type for Lindera operations.
6#[wasm_bindgen(js_name = "LinderaError")]
7#[derive(Debug, Clone)]
8pub struct JsLinderaError {
9    #[wasm_bindgen(getter_with_clone)]
10    pub message: String,
11}
12
13impl fmt::Display for JsLinderaError {
14    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
15        write!(f, "{}", self.message)
16    }
17}
18
19#[wasm_bindgen]
20impl JsLinderaError {
21    #[wasm_bindgen(constructor)]
22    pub fn new(message: String) -> Self {
23        JsLinderaError { message }
24    }
25
26    #[wasm_bindgen(js_name = "toString")]
27    pub fn js_to_string(&self) -> String {
28        self.to_string()
29    }
30}
31
32#[cfg(test)]
33mod tests {
34    use super::*;
35
36    #[cfg(target_arch = "wasm32")]
37    use wasm_bindgen_test::wasm_bindgen_test;
38
39    #[cfg(target_arch = "wasm32")]
40    #[wasm_bindgen_test]
41    fn test_lindera_error_wasm() {
42        let error = JsLinderaError::new("test error".to_string());
43
44        assert_eq!(error.message, "test error");
45        assert_eq!(error.js_to_string(), "test error");
46    }
47
48    #[test]
49    fn test_lindera_error_new() {
50        let error = JsLinderaError::new("test error".to_string());
51
52        assert_eq!(error.message, "test error");
53    }
54
55    #[test]
56    fn test_lindera_error_display() {
57        let error = JsLinderaError::new("something went wrong".to_string());
58
59        assert_eq!(format!("{}", error), "something went wrong");
60        assert_eq!(error.js_to_string(), "something went wrong");
61    }
62
63    #[test]
64    fn test_lindera_error_empty_message() {
65        let error = JsLinderaError::new(String::new());
66
67        assert_eq!(error.message, "");
68        assert_eq!(error.js_to_string(), "");
69    }
70}