File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -164,6 +164,8 @@ impl<'de> Deserialize<'de> for Checksum {
164
164
165
165
#[ cfg( test) ]
166
166
mod test {
167
+ use num_traits:: Zero ;
168
+
167
169
use super :: Checksum ;
168
170
169
171
#[ test]
@@ -187,4 +189,26 @@ mod test {
187
189
assert_eq ! ( deserialize( "3573495687.0" ) . value( ) , 3573495687 ) ;
188
190
assert_eq ! ( deserialize( "-721471609.0" ) . value( ) , 3573495687 ) ;
189
191
}
192
+
193
+ #[ test]
194
+ pub fn test_arithmetic ( ) {
195
+ assert_eq ! ( Checksum :: from( 3 ) + Checksum :: from( 7 ) , Checksum :: from( 10 ) ) ;
196
+
197
+ // Checksums should always wrap around
198
+ assert_eq ! (
199
+ Checksum :: from( 0xFFFFFFFF ) + Checksum :: from( 1 ) ,
200
+ Checksum :: zero( )
201
+ ) ;
202
+ assert_eq ! (
203
+ Checksum :: zero( ) - Checksum :: from( 1 ) ,
204
+ Checksum :: from( 0xFFFFFFFF )
205
+ ) ;
206
+
207
+ let mut cs = Checksum :: from ( 0x8FFFFFFF ) ;
208
+ cs += Checksum :: from ( 0x80000000 ) ;
209
+ assert_eq ! ( cs, Checksum :: from( 0x0FFFFFFF ) ) ;
210
+
211
+ cs -= Checksum :: from ( 0x80000001 ) ;
212
+ assert_eq ! ( cs, Checksum :: from( 0x8FFFFFFE ) ) ;
213
+ }
190
214
}
You can’t perform that action at this time.
0 commit comments