compare.rs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. mod fst;
  2. mod roaring;
  3. mod trie;
  4. #[test]
  5. fn compare_all_implementations() {
  6. let xid_start_fst = fst::xid_start_fst();
  7. let xid_continue_fst = fst::xid_continue_fst();
  8. let xid_start_roaring = roaring::xid_start_bitmap();
  9. let xid_continue_roaring = roaring::xid_continue_bitmap();
  10. for ch in '\0'..=char::MAX {
  11. let thought_to_be_start = unicode_ident::is_xid_start(ch);
  12. let thought_to_be_continue = unicode_ident::is_xid_continue(ch);
  13. // unicode-xid
  14. assert_eq!(
  15. thought_to_be_start,
  16. unicode_xid::UnicodeXID::is_xid_start(ch),
  17. "{ch:?}",
  18. );
  19. assert_eq!(
  20. thought_to_be_continue,
  21. unicode_xid::UnicodeXID::is_xid_continue(ch),
  22. "{ch:?}",
  23. );
  24. // ucd-trie
  25. assert_eq!(
  26. thought_to_be_start,
  27. trie::XID_START.contains_char(ch),
  28. "{ch:?}",
  29. );
  30. assert_eq!(
  31. thought_to_be_continue,
  32. trie::XID_CONTINUE.contains_char(ch),
  33. "{ch:?}",
  34. );
  35. // fst
  36. assert_eq!(
  37. thought_to_be_start,
  38. xid_start_fst.contains((ch as u32).to_be_bytes()),
  39. "{ch:?}",
  40. );
  41. assert_eq!(
  42. thought_to_be_continue,
  43. xid_continue_fst.contains((ch as u32).to_be_bytes()),
  44. "{ch:?}",
  45. );
  46. // roaring
  47. assert_eq!(
  48. thought_to_be_start,
  49. xid_start_roaring.contains(ch as u32),
  50. "{ch:?}",
  51. );
  52. assert_eq!(
  53. thought_to_be_continue,
  54. xid_continue_roaring.contains(ch as u32),
  55. "{ch:?}",
  56. );
  57. }
  58. }