@@ -5,3 +5,66 @@ fn align_constants() {
55 assert_eq ! ( Align :: ONE , Align :: from_bytes( 1 ) . unwrap( ) ) ;
66 assert_eq ! ( Align :: EIGHT , Align :: from_bytes( 8 ) . unwrap( ) ) ;
77}
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