riichi_decomp_table/
lib.rs1#[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}