@@ -5,3 +5,66 @@ fn align_constants() {
5
5
assert_eq ! ( Align :: ONE , Align :: from_bytes( 1 ) . unwrap( ) ) ;
6
6
assert_eq ! ( Align :: EIGHT , Align :: from_bytes( 8 ) . unwrap( ) ) ;
7
7
}
8
+
9
+ #[ test]
10
+ fn wrapping_range_contains_range ( ) {
11
+ let size16 = Size :: from_bytes ( 16 ) ;
12
+
13
+ let a = WrappingRange { start : 10 , end : 20 } ;
14
+ assert ! ( a. contains_range( a, size16) ) ;
15
+ assert ! ( a. contains_range( WrappingRange { start: 11 , end: 19 } , size16) ) ;
16
+ assert ! ( a. contains_range( WrappingRange { start: 10 , end: 10 } , size16) ) ;
17
+ assert ! ( a. contains_range( WrappingRange { start: 20 , end: 20 } , size16) ) ;
18
+ assert ! ( !a. contains_range( WrappingRange { start: 10 , end: 21 } , size16) ) ;
19
+ assert ! ( !a. contains_range( WrappingRange { start: 9 , end: 20 } , size16) ) ;
20
+ assert ! ( !a. contains_range( WrappingRange { start: 4 , end: 6 } , size16) ) ;
21
+ assert ! ( !a. contains_range( WrappingRange { start: 24 , end: 26 } , size16) ) ;
22
+
23
+ assert ! ( !a. contains_range( WrappingRange { start: 16 , end: 14 } , size16) ) ;
24
+
25
+ let b = WrappingRange { start : 20 , end : 10 } ;
26
+ assert ! ( b. contains_range( b, size16) ) ;
27
+ assert ! ( b. contains_range( WrappingRange { start: 20 , end: 20 } , size16) ) ;
28
+ assert ! ( b. contains_range( WrappingRange { start: 10 , end: 10 } , size16) ) ;
29
+ assert ! ( b. contains_range( WrappingRange { start: 0 , end: 10 } , size16) ) ;
30
+ assert ! ( b. contains_range( WrappingRange { start: 20 , end: 30 } , size16) ) ;
31
+ assert ! ( b. contains_range( WrappingRange { start: 20 , end: 9 } , size16) ) ;
32
+ assert ! ( b. contains_range( WrappingRange { start: 21 , end: 10 } , size16) ) ;
33
+ assert ! ( b. contains_range( WrappingRange { start: 999 , end: 9999 } , size16) ) ;
34
+ assert ! ( b. contains_range( WrappingRange { start: 999 , end: 9 } , size16) ) ;
35
+ assert ! ( !b. contains_range( WrappingRange { start: 19 , end: 19 } , size16) ) ;
36
+ assert ! ( !b. contains_range( WrappingRange { start: 11 , end: 11 } , size16) ) ;
37
+ assert ! ( !b. contains_range( WrappingRange { start: 19 , end: 11 } , size16) ) ;
38
+ assert ! ( !b. contains_range( WrappingRange { start: 11 , end: 19 } , size16) ) ;
39
+
40
+ let f = WrappingRange { start : 0 , end : u128:: MAX } ;
41
+ assert ! ( f. contains_range( WrappingRange { start: 10 , end: 20 } , size16) ) ;
42
+ assert ! ( f. contains_range( WrappingRange { start: 20 , end: 10 } , size16) ) ;
43
+
44
+ let g = WrappingRange { start : 2 , end : 1 } ;
45
+ assert ! ( g. contains_range( WrappingRange { start: 10 , end: 20 } , size16) ) ;
46
+ assert ! ( g. contains_range( WrappingRange { start: 20 , end: 10 } , size16) ) ;
47
+
48
+ let size1 = Size :: from_bytes ( 1 ) ;
49
+ let u8r = WrappingRange { start : 0 , end : 255 } ;
50
+ let i8r = WrappingRange { start : 128 , end : 127 } ;
51
+ assert ! ( u8r. contains_range( i8r, size1) ) ;
52
+ assert ! ( i8r. contains_range( u8r, size1) ) ;
53
+ assert ! ( !u8r. contains_range( i8r, size16) ) ;
54
+ assert ! ( i8r. contains_range( u8r, size16) ) ;
55
+
56
+ let boolr = WrappingRange { start : 0 , end : 1 } ;
57
+ assert ! ( u8r. contains_range( boolr, size1) ) ;
58
+ assert ! ( i8r. contains_range( boolr, size1) ) ;
59
+ assert ! ( !boolr. contains_range( u8r, size1) ) ;
60
+ assert ! ( !boolr. contains_range( i8r, size1) ) ;
61
+
62
+ let cmpr = WrappingRange { start : 255 , end : 1 } ;
63
+ assert ! ( u8r. contains_range( cmpr, size1) ) ;
64
+ assert ! ( i8r. contains_range( cmpr, size1) ) ;
65
+ assert ! ( !cmpr. contains_range( u8r, size1) ) ;
66
+ assert ! ( !cmpr. contains_range( i8r, size1) ) ;
67
+
68
+ assert ! ( !boolr. contains_range( cmpr, size1) ) ;
69
+ assert ! ( cmpr. contains_range( boolr, size1) ) ;
70
+ }
0 commit comments