web.rs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //! Test suite for the Web and headless browsers.
  2. #![cfg(target_arch = "wasm32")]
  3. use rustpad_wasm::OpSeq;
  4. use wasm_bindgen_test::*;
  5. wasm_bindgen_test_configure!(run_in_browser);
  6. #[wasm_bindgen_test]
  7. fn compose_operations() {
  8. let mut a = OpSeq::default();
  9. a.insert("abc");
  10. let mut b = OpSeq::default();
  11. b.retain(3);
  12. b.insert("def");
  13. let after_a = a.apply("").unwrap();
  14. let after_b = b.apply(&after_a).unwrap();
  15. let c = a.compose(&b).unwrap();
  16. let after_c = c.apply("").unwrap();
  17. assert_eq!(after_c, after_b);
  18. }
  19. #[wasm_bindgen_test]
  20. fn transform_operations() {
  21. let s = "abc";
  22. let mut a = OpSeq::default();
  23. a.retain(3);
  24. a.insert("def");
  25. let mut b = OpSeq::default();
  26. b.retain(3);
  27. b.insert("ghi");
  28. let pair = a.transform(&b).unwrap();
  29. let (a_prime, b_prime) = (pair.first(), pair.second());
  30. let ab_prime = a.compose(&b_prime).unwrap();
  31. let ba_prime = b.compose(&a_prime).unwrap();
  32. let after_ab_prime = ab_prime.apply(s).unwrap();
  33. let after_ba_prime = ba_prime.apply(s).unwrap();
  34. assert_eq!(ab_prime, ba_prime);
  35. assert_eq!(after_ab_prime, after_ba_prime);
  36. }
  37. #[wasm_bindgen_test]
  38. fn invert_operations() {
  39. let s = "abc";
  40. let mut o = OpSeq::default();
  41. o.retain(3);
  42. o.insert("def");
  43. let p = o.invert(s);
  44. assert_eq!(p.apply(&o.apply(s).unwrap()).unwrap(), s);
  45. }
  46. #[wasm_bindgen_test]
  47. fn transform_index() {
  48. let mut o = OpSeq::default();
  49. o.retain(3);
  50. o.insert("def");
  51. o.retain(3);
  52. o.insert("abc");
  53. assert_eq!(o.transform_index(2), 2);
  54. assert_eq!(o.transform_index(3), 6);
  55. assert_eq!(o.transform_index(5), 8);
  56. assert_eq!(o.transform_index(7), 13);
  57. }