16e652d70Sopenharmony_cimod fst;
26e652d70Sopenharmony_cimod roaring;
36e652d70Sopenharmony_cimod trie;
46e652d70Sopenharmony_ci
56e652d70Sopenharmony_ci#[test]
66e652d70Sopenharmony_cifn compare_all_implementations() {
76e652d70Sopenharmony_ci    let xid_start_fst = fst::xid_start_fst();
86e652d70Sopenharmony_ci    let xid_continue_fst = fst::xid_continue_fst();
96e652d70Sopenharmony_ci    let xid_start_roaring = roaring::xid_start_bitmap();
106e652d70Sopenharmony_ci    let xid_continue_roaring = roaring::xid_continue_bitmap();
116e652d70Sopenharmony_ci
126e652d70Sopenharmony_ci    for ch in '\0'..=char::MAX {
136e652d70Sopenharmony_ci        let thought_to_be_start = unicode_ident::is_xid_start(ch);
146e652d70Sopenharmony_ci        let thought_to_be_continue = unicode_ident::is_xid_continue(ch);
156e652d70Sopenharmony_ci
166e652d70Sopenharmony_ci        // unicode-xid
176e652d70Sopenharmony_ci        assert_eq!(
186e652d70Sopenharmony_ci            thought_to_be_start,
196e652d70Sopenharmony_ci            unicode_xid::UnicodeXID::is_xid_start(ch),
206e652d70Sopenharmony_ci            "{ch:?}",
216e652d70Sopenharmony_ci        );
226e652d70Sopenharmony_ci        assert_eq!(
236e652d70Sopenharmony_ci            thought_to_be_continue,
246e652d70Sopenharmony_ci            unicode_xid::UnicodeXID::is_xid_continue(ch),
256e652d70Sopenharmony_ci            "{ch:?}",
266e652d70Sopenharmony_ci        );
276e652d70Sopenharmony_ci
286e652d70Sopenharmony_ci        // ucd-trie
296e652d70Sopenharmony_ci        assert_eq!(
306e652d70Sopenharmony_ci            thought_to_be_start,
316e652d70Sopenharmony_ci            trie::XID_START.contains_char(ch),
326e652d70Sopenharmony_ci            "{ch:?}",
336e652d70Sopenharmony_ci        );
346e652d70Sopenharmony_ci        assert_eq!(
356e652d70Sopenharmony_ci            thought_to_be_continue,
366e652d70Sopenharmony_ci            trie::XID_CONTINUE.contains_char(ch),
376e652d70Sopenharmony_ci            "{ch:?}",
386e652d70Sopenharmony_ci        );
396e652d70Sopenharmony_ci
406e652d70Sopenharmony_ci        // fst
416e652d70Sopenharmony_ci        assert_eq!(
426e652d70Sopenharmony_ci            thought_to_be_start,
436e652d70Sopenharmony_ci            xid_start_fst.contains((ch as u32).to_be_bytes()),
446e652d70Sopenharmony_ci            "{ch:?}",
456e652d70Sopenharmony_ci        );
466e652d70Sopenharmony_ci        assert_eq!(
476e652d70Sopenharmony_ci            thought_to_be_continue,
486e652d70Sopenharmony_ci            xid_continue_fst.contains((ch as u32).to_be_bytes()),
496e652d70Sopenharmony_ci            "{ch:?}",
506e652d70Sopenharmony_ci        );
516e652d70Sopenharmony_ci
526e652d70Sopenharmony_ci        // roaring
536e652d70Sopenharmony_ci        assert_eq!(
546e652d70Sopenharmony_ci            thought_to_be_start,
556e652d70Sopenharmony_ci            xid_start_roaring.contains(ch as u32),
566e652d70Sopenharmony_ci            "{ch:?}",
576e652d70Sopenharmony_ci        );
586e652d70Sopenharmony_ci        assert_eq!(
596e652d70Sopenharmony_ci            thought_to_be_continue,
606e652d70Sopenharmony_ci            xid_continue_roaring.contains(ch as u32),
616e652d70Sopenharmony_ci            "{ch:?}",
626e652d70Sopenharmony_ci        );
636e652d70Sopenharmony_ci    }
646e652d70Sopenharmony_ci}
65