1 use cranelift_bitset::*;
2 
3 #[test]
4 fn contains() {
5     let s = ScalarBitSet::<u8>(255);
6     for i in 0..7 {
7         assert!(s.contains(i));
8     }
9 
10     let s1 = ScalarBitSet::<u8>(0);
11     for i in 0..7 {
12         assert!(!s1.contains(i));
13     }
14 
15     let s2 = ScalarBitSet::<u8>(127);
16     for i in 0..6 {
17         assert!(s2.contains(i));
18     }
19     assert!(!s2.contains(7));
20 
21     let s3 = ScalarBitSet::<u8>(2 | 4 | 64);
22     assert!(!s3.contains(0) && !s3.contains(3) && !s3.contains(4));
23     assert!(!s3.contains(5) && !s3.contains(7));
24     assert!(s3.contains(1) && s3.contains(2) && s3.contains(6));
25 
26     let s4 = ScalarBitSet::<u16>(4 | 8 | 256 | 1024);
27     assert!(
28         !s4.contains(0)
29             && !s4.contains(1)
30             && !s4.contains(4)
31             && !s4.contains(5)
32             && !s4.contains(6)
33             && !s4.contains(7)
34             && !s4.contains(9)
35             && !s4.contains(11)
36     );
37     assert!(s4.contains(2) && s4.contains(3) && s4.contains(8) && s4.contains(10));
38 }
39 
40 #[test]
41 fn minmax() {
42     let s = ScalarBitSet::<u8>(255);
43     assert_eq!(s.min(), Some(0));
44     assert_eq!(s.max(), Some(7));
45     assert!(s.min() == Some(0) && s.max() == Some(7));
46     let s1 = ScalarBitSet::<u8>(0);
47     assert!(s1.min() == None && s1.max() == None);
48     let s2 = ScalarBitSet::<u8>(127);
49     assert!(s2.min() == Some(0) && s2.max() == Some(6));
50     let s3 = ScalarBitSet::<u8>(2 | 4 | 64);
51     assert!(s3.min() == Some(1) && s3.max() == Some(6));
52     let s4 = ScalarBitSet::<u16>(4 | 8 | 256 | 1024);
53     assert!(s4.min() == Some(2) && s4.max() == Some(10));
54 }
55 
56 #[test]
57 fn from_range() {
58     let s = ScalarBitSet::<u8>::from_range(5, 5);
59     assert!(s.0 == 0);
60 
61     let s = ScalarBitSet::<u8>::from_range(0, 8);
62     assert!(s.0 == 255);
63 
64     let s = ScalarBitSet::<u16>::from_range(0, 8);
65     assert!(s.0 == 255u16);
66 
67     let s = ScalarBitSet::<u16>::from_range(0, 16);
68     assert!(s.0 == 65535u16);
69 
70     let s = ScalarBitSet::<u8>::from_range(5, 6);
71     assert!(s.0 == 32u8);
72 
73     let s = ScalarBitSet::<u8>::from_range(3, 7);
74     assert!(s.0 == 8 | 16 | 32 | 64);
75 
76     let s = ScalarBitSet::<u16>::from_range(5, 11);
77     assert!(s.0 == 32 | 64 | 128 | 256 | 512 | 1024);
78 }
79