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