@@ -69,7 +69,7 @@ impl BoltWireFormat for BoltInteger {
6969
7070 fn parse ( _version : Version , input : & mut Bytes ) -> Result < Self > {
7171 let value: i64 = match input. get_u8 ( ) {
72- marker if ( -16 ..=127 ) . contains ( & ( marker as i8 ) ) => marker as i64 ,
72+ marker if ( -16 ..=127 ) . contains ( & ( marker as i8 ) ) => ( marker as i8 ) as i64 ,
7373 INT_8 => input. get_i8 ( ) as i64 ,
7474 INT_16 => input. get_i16 ( ) as i64 ,
7575 INT_32 => input. get_i32 ( ) as i64 ,
@@ -145,6 +145,18 @@ mod tests {
145145
146146 #[ test]
147147 fn should_deserialize_integer ( ) {
148+ let mut b = Bytes :: from_static ( & [ 0x00 ] ) ;
149+ let bolt_int: BoltInteger = BoltInteger :: parse ( Version :: V4_1 , & mut b) . unwrap ( ) ;
150+ assert_eq ! ( bolt_int. value, 0 ) ;
151+
152+ let mut b = Bytes :: from_static ( & [ 0xF0 ] ) ;
153+ let bolt_int: BoltInteger = BoltInteger :: parse ( Version :: V4_1 , & mut b) . unwrap ( ) ;
154+ assert_eq ! ( bolt_int. value, -16 ) ;
155+
156+ let mut b = Bytes :: from_static ( & [ 0x7F ] ) ;
157+ let bolt_int: BoltInteger = BoltInteger :: parse ( Version :: V4_1 , & mut b) . unwrap ( ) ;
158+ assert_eq ! ( bolt_int. value, 127 ) ;
159+
148160 let mut b = Bytes :: from_static ( & [ 0x2A ] ) ;
149161 let bolt_int: BoltInteger = BoltInteger :: parse ( Version :: V4_1 , & mut b) . unwrap ( ) ;
150162 assert_eq ! ( bolt_int. value, 42 ) ;
0 commit comments