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}