digit/
enum.rs

1#[non_exhaustive]
2#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
3pub enum Digit {
4    Zero = 0,
5    One = 1,
6    Two = 2,
7    Three = 3,
8    Four = 4,
9    Five = 5,
10    Six = 6,
11    Seven = 7,
12    Eight = 8,
13    Nine = 9,
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    #[test]
21    fn descriminator() {
22        assert_eq!(0, Digit::Zero as u8);
23        assert_eq!(1, Digit::One as u16);
24        assert_eq!(2, Digit::Two as u32);
25        assert_eq!(3, Digit::Three as u64);
26        assert_eq!(4, Digit::Four as u128);
27        assert_eq!(5, Digit::Five as i8);
28        assert_eq!(6, Digit::Six as i16);
29        assert_eq!(7, Digit::Seven as i32);
30        assert_eq!(8, Digit::Eight as i64);
31        assert_eq!(9, Digit::Nine as i128);
32    }
33
34    #[test]
35    fn eq() {
36        assert_eq!(Digit::One, Digit::One);
37        assert_ne!(Digit::Two, Digit::Three);
38    }
39
40    #[test]
41    fn comp() {
42        assert_eq!(Digit::One <= Digit::One, true);
43        assert_eq!(Digit::Two < Digit::Three, true);
44        assert_eq!(Digit::Four > Digit::Five, false);
45    }
46
47    #[test]
48    fn ord_sort() {
49        let mut a = [Digit::Four, Digit::Zero, Digit::Nine];
50        a.sort();
51
52        assert_eq!(a, [Digit::Zero, Digit::Four, Digit::Nine]);
53    }
54
55    #[test]
56    fn ord_pq() {
57        use std::collections::BinaryHeap;
58
59        let mut heap = BinaryHeap::new();
60        heap.push(Digit::One);
61        heap.push(Digit::Eight);
62        heap.push(Digit::Six);
63        assert_eq!(heap.pop().unwrap(), Digit::Eight);
64    }
65}