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 {
164164
165165#[ cfg( test) ]
166166mod test {
167+ use num_traits:: Zero ;
168+
167169 use super :: Checksum ;
168170
169171 #[ test]
@@ -187,4 +189,26 @@ mod test {
187189 assert_eq ! ( deserialize( "3573495687.0" ) . value( ) , 3573495687 ) ;
188190 assert_eq ! ( deserialize( "-721471609.0" ) . value( ) , 3573495687 ) ;
189191 }
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+ }
190214}
You can’t perform that action at this time.
0 commit comments