|  | mod fst; | 
|  | mod roaring; | 
|  | mod trie; | 
|  |  | 
|  | #[test] | 
|  | fn compare_all_implementations() { | 
|  | let xid_start_fst = fst::xid_start_fst(); | 
|  | let xid_continue_fst = fst::xid_continue_fst(); | 
|  | let xid_start_roaring = roaring::xid_start_bitmap(); | 
|  | let xid_continue_roaring = roaring::xid_continue_bitmap(); | 
|  |  | 
|  | for ch in '\0'..=char::MAX { | 
|  | let thought_to_be_start = unicode_ident::is_xid_start(ch); | 
|  | let thought_to_be_continue = unicode_ident::is_xid_continue(ch); | 
|  |  | 
|  | // unicode-xid | 
|  | assert_eq!( | 
|  | thought_to_be_start, | 
|  | unicode_xid::UnicodeXID::is_xid_start(ch), | 
|  | "{ch:?}", | 
|  | ); | 
|  | assert_eq!( | 
|  | thought_to_be_continue, | 
|  | unicode_xid::UnicodeXID::is_xid_continue(ch), | 
|  | "{ch:?}", | 
|  | ); | 
|  |  | 
|  | // ucd-trie | 
|  | assert_eq!( | 
|  | thought_to_be_start, | 
|  | trie::XID_START.contains_char(ch), | 
|  | "{ch:?}", | 
|  | ); | 
|  | assert_eq!( | 
|  | thought_to_be_continue, | 
|  | trie::XID_CONTINUE.contains_char(ch), | 
|  | "{ch:?}", | 
|  | ); | 
|  |  | 
|  | // fst | 
|  | assert_eq!( | 
|  | thought_to_be_start, | 
|  | xid_start_fst.contains((ch as u32).to_be_bytes()), | 
|  | "{ch:?}", | 
|  | ); | 
|  | assert_eq!( | 
|  | thought_to_be_continue, | 
|  | xid_continue_fst.contains((ch as u32).to_be_bytes()), | 
|  | "{ch:?}", | 
|  | ); | 
|  |  | 
|  | // roaring | 
|  | assert_eq!( | 
|  | thought_to_be_start, | 
|  | xid_start_roaring.contains(ch as u32), | 
|  | "{ch:?}", | 
|  | ); | 
|  | assert_eq!( | 
|  | thought_to_be_continue, | 
|  | xid_continue_roaring.contains(ch as u32), | 
|  | "{ch:?}", | 
|  | ); | 
|  | } | 
|  | } |