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