@@ -768,22 +768,31 @@ mod tests {
768768
769769 #[ test]
770770 fn test_read_num ( ) {
771- // Test values < 255
772- let mut db = MockDatabase :: new ( vec ! [ 42 ] ) ;
773- assert_eq ! ( db. read_num( ) . unwrap( ) , 42 ) ;
774-
775- // Test value 255 (special case: 0xFF, 0x00)
776- let mut db = MockDatabase :: new ( vec ! [ 0xFF , 0x00 ] ) ;
777- assert_eq ! ( db. read_num( ) . unwrap( ) , 255 ) ;
778-
779- // Test multi-byte value (e.g., 256: 0xFF, 0x01, 0x00)
780- let mut db = MockDatabase :: new ( vec ! [ 0xFF , 0x01 , 0x00 ] ) ;
781- assert_eq ! ( db. read_num( ) . unwrap( ) , 256 ) ;
782-
783- // Test larger multi-byte value (65536 needs two 0xFF)
784- // 0xFF, 0xFF, 0x01, 0x00, 0x00
785- let mut db = MockDatabase :: new ( vec ! [ 0xFF , 0xFF , 0x01 , 0x00 , 0x00 ] ) ;
786- assert_eq ! ( db. read_num( ) . unwrap( ) , 65536 ) ;
771+ let cases = vec ! [
772+ ( 0x00 , vec![ 0x00 ] ) ,
773+ ( 0xFE , vec![ 0xFE ] ) ,
774+ ( 0xFF , vec![ 0xFF , 0x00 ] ) ,
775+ ( 0x0100 , vec![ 0xFF , 0x01 , 0x00 ] ) ,
776+ ( 0x01FF , vec![ 0xFF , 0x01 , 0xFF ] ) ,
777+ ( 0xFEFF , vec![ 0xFF , 0xFE , 0xFF ] ) ,
778+ ( 0xFF00 , vec![ 0xFF , 0xFF , 0x00 , 0x00 ] ) ,
779+ ( 0xFF01 , vec![ 0xFF , 0xFF , 0x00 , 0x01 ] ) ,
780+ ( 0x010000 , vec![ 0xFF , 0xFF , 0x01 , 0x00 , 0x00 ] ) ,
781+ ( 0xABCDEF , vec![ 0xFF , 0xFF , 0xAB , 0xCD , 0xEF ] ) ,
782+ ( 0xFFABCD , vec![ 0xFF , 0xFF , 0xFF , 0x00 , 0xAB , 0xCD ] ) ,
783+ ( 0x01ABCDEF , vec![ 0xFF , 0xFF , 0xFF , 0x01 , 0xAB , 0xCD , 0xEF ] ) ,
784+ ] ;
785+
786+ for ( expected, bytes) in cases {
787+ let mut db = MockDatabase :: new ( bytes. clone ( ) ) ;
788+
789+ let result = db. read_num ( ) . expect ( & format ! ( "Failed to read {:?}" , bytes) ) ;
790+ assert_eq ! (
791+ result, expected,
792+ "Case {:?} failed: expected 0x{:X}, got 0x{:X}" ,
793+ bytes, expected, result
794+ ) ;
795+ }
787796 }
788797
789798 #[ test]
0 commit comments