riichi_decomp_table/
lib.rs

1#[doc = include_str!("../README.md")]
2
3pub mod c_table;
4pub mod w_table;
5pub mod utils;
6
7pub use c_table::*;
8pub use w_table::*;
9
10#[cfg(test)]
11mod tests {
12    use super::*;
13    use itertools::Itertools;
14    use once_cell::sync::Lazy;
15
16    static C_TABLE: Lazy<CTable> = Lazy::new(make_c_table);
17    static W_TABLE: Lazy<WTable> = Lazy::new(|| make_w_table(&C_TABLE));
18
19    #[test]
20    fn check_num_keys() {
21        let c_table = &C_TABLE;
22        let w_table = &W_TABLE;
23        assert_eq!(c_table.len(), C_TABLE_NUM_KEYS);
24        assert_eq!(w_table.len(), W_TABLE_NUM_KEYS);
25    }
26
27    #[test]
28    fn check_c_trivial_entries() {
29        let c_table = &C_TABLE;
30
31        let key = 0o000020000;
32        let &value = c_table.get(&key).unwrap();
33        let result = c_entry_iter_alts(key, value).collect_vec();
34        assert_eq!(result.len(), 1);
35        assert_eq!(result[0].groups.len(), 0);
36        assert_eq!(result[0].pair(), Some(4));
37
38        assert_eq!(c_table[&0], CAlts::new().with(!0));
39        let zero_result = c_entry_iter_alts(0, CAlts::new().with(!0)).collect_vec();
40        assert_eq!(zero_result.len(), 1);
41        assert_eq!(zero_result[0].groups.len(), 0);
42        assert_eq!(zero_result[0].pair(), None);
43
44        assert_eq!(c_table[&0o000000003], CAlts::new().with(!0x0000));
45        assert_eq!(c_table[&0o300000000], CAlts::new().with(!0x000F));
46    }
47}