Error.rs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. use js_sys::*;
  2. use wasm_bindgen::JsCast;
  3. use wasm_bindgen::JsValue;
  4. use wasm_bindgen_test::*;
  5. #[wasm_bindgen_test]
  6. fn new() {
  7. let error = Error::new("some message");
  8. assert_eq!(JsValue::from(error.message()), "some message");
  9. }
  10. #[wasm_bindgen_test]
  11. fn new_with_cause() {
  12. let options = Object::new();
  13. Reflect::set(
  14. options.as_ref(),
  15. &JsValue::from("cause"),
  16. &JsValue::from("some cause"),
  17. )
  18. .unwrap();
  19. let error = Error::new_with_options("some message", &options);
  20. assert_eq!(error.cause(), "some cause");
  21. }
  22. #[wasm_bindgen_test]
  23. fn empty_cause() {
  24. let error = Error::new("test");
  25. assert_eq!(error.cause(), JsValue::UNDEFINED);
  26. }
  27. #[wasm_bindgen_test]
  28. fn set_cause() {
  29. let error = Error::new("test");
  30. error.set_cause(&JsValue::from("different"));
  31. assert_eq!(error.cause(), "different");
  32. }
  33. #[wasm_bindgen_test]
  34. fn set_message() {
  35. let error = Error::new("test");
  36. error.set_message("another");
  37. assert_eq!(JsValue::from(error.message()), "another");
  38. }
  39. #[wasm_bindgen_test]
  40. fn name() {
  41. let error = Error::new("test");
  42. assert_eq!(JsValue::from(error.name()), "Error");
  43. }
  44. #[wasm_bindgen_test]
  45. fn set_name() {
  46. let error = Error::new("test");
  47. error.set_name("different");
  48. assert_eq!(JsValue::from(error.name()), "different");
  49. }
  50. #[wasm_bindgen_test]
  51. fn to_string() {
  52. let error = Error::new("error message 1");
  53. assert_eq!(JsValue::from(error.to_string()), "Error: error message 1");
  54. error.set_name("error_name_1");
  55. assert_eq!(
  56. JsValue::from(error.to_string()),
  57. "error_name_1: error message 1"
  58. );
  59. }
  60. #[wasm_bindgen_test]
  61. fn error_inheritance() {
  62. let error = Error::new("test");
  63. assert!(error.is_instance_of::<Error>());
  64. assert!(error.is_instance_of::<Object>());
  65. let _: &Object = error.as_ref();
  66. }