use std::fmt;
use wasm_bindgen::prelude::*;
#[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(), "");
}
}