@@ -1027,16 +1027,14 @@ mod tests {
10271027 assert_eq ! ( double_serialize, CqlValue :: Double ( double) ) ;
10281028 }
10291029
1030- #[ cfg( feature = "num-bigint-03" ) ]
1031- #[ test]
1032- fn test_varint ( ) {
1033- use num_bigint_03:: ToBigInt ;
1034-
1035- struct Test < ' a > {
1036- value : num_bigint_03:: BigInt ,
1037- encoding : & ' a [ u8 ] ,
1038- }
1030+ #[ cfg( any( feature = "num-bigint-03" , feature = "num-bigint-04" ) ) ]
1031+ struct VarintTestCase {
1032+ value : i32 ,
1033+ encoding : Vec < u8 > ,
1034+ }
10391035
1036+ #[ cfg( any( feature = "num-bigint-03" , feature = "num-bigint-04" ) ) ]
1037+ fn varint_test_cases_from_spec ( ) -> Vec < VarintTestCase > {
10401038 /*
10411039 Table taken from CQL Binary Protocol v4 spec
10421040
@@ -1051,44 +1049,65 @@ mod tests {
10511049 -128 | 0x80
10521050 -129 | 0xFF7F
10531051 */
1054- let tests = [
1055- Test {
1056- value : 0 . to_bigint ( ) . unwrap ( ) ,
1057- encoding : & [ 0x00 ] ,
1052+ vec ! [
1053+ VarintTestCase {
1054+ value: 0 ,
1055+ encoding: vec! [ 0x00 ] ,
10581056 } ,
1059- Test {
1060- value : 1 . to_bigint ( ) . unwrap ( ) ,
1061- encoding : & [ 0x01 ] ,
1057+ VarintTestCase {
1058+ value: 1 ,
1059+ encoding: vec! [ 0x01 ] ,
10621060 } ,
1063- Test {
1064- value : 127 . to_bigint ( ) . unwrap ( ) ,
1065- encoding : & [ 0x7F ] ,
1061+ VarintTestCase {
1062+ value: 127 ,
1063+ encoding: vec! [ 0x7F ] ,
10661064 } ,
1067- Test {
1068- value : 128 . to_bigint ( ) . unwrap ( ) ,
1069- encoding : & [ 0x00 , 0x80 ] ,
1065+ VarintTestCase {
1066+ value: 128 ,
1067+ encoding: vec! [ 0x00 , 0x80 ] ,
10701068 } ,
1071- Test {
1072- value : 129 . to_bigint ( ) . unwrap ( ) ,
1073- encoding : & [ 0x00 , 0x81 ] ,
1069+ VarintTestCase {
1070+ value: 129 ,
1071+ encoding: vec! [ 0x00 , 0x81 ] ,
10741072 } ,
1075- Test {
1076- value : ( - 1 ) . to_bigint ( ) . unwrap ( ) ,
1077- encoding : & [ 0xFF ] ,
1073+ VarintTestCase {
1074+ value: - 1 ,
1075+ encoding: vec! [ 0xFF ] ,
10781076 } ,
1079- Test {
1080- value : ( -128 ) . to_bigint ( ) . unwrap ( ) ,
1081- encoding : & [ 0x80 ] ,
1077+ VarintTestCase {
1078+ value: -128 ,
1079+ encoding: vec! [ 0x80 ] ,
10821080 } ,
1083- Test {
1084- value : ( -129 ) . to_bigint ( ) . unwrap ( ) ,
1085- encoding : & [ 0xFF , 0x7F ] ,
1081+ VarintTestCase {
1082+ value: -129 ,
1083+ encoding: vec! [ 0xFF , 0x7F ] ,
10861084 } ,
1087- ] ;
1085+ ]
1086+ }
1087+
1088+ #[ cfg( feature = "num-bigint-03" ) ]
1089+ #[ test]
1090+ fn test_bigint03 ( ) {
1091+ use num_bigint_03:: ToBigInt ;
1092+
1093+ let tests = varint_test_cases_from_spec ( ) ;
1094+
1095+ for t in tests. iter ( ) {
1096+ let value = super :: deser_cql_value ( & ColumnType :: Varint , & mut & * t. encoding ) . unwrap ( ) ;
1097+ assert_eq ! ( CqlValue :: Varint ( t. value. to_bigint( ) . unwrap( ) . into( ) ) , value) ;
1098+ }
1099+ }
1100+
1101+ #[ cfg( feature = "num-bigint-04" ) ]
1102+ #[ test]
1103+ fn test_bigint04 ( ) {
1104+ use num_bigint_04:: ToBigInt ;
1105+
1106+ let tests = varint_test_cases_from_spec ( ) ;
10881107
10891108 for t in tests. iter ( ) {
10901109 let value = super :: deser_cql_value ( & ColumnType :: Varint , & mut & * t. encoding ) . unwrap ( ) ;
1091- assert_eq ! ( CqlValue :: Varint ( t. value. clone ( ) . into( ) ) , value) ;
1110+ assert_eq ! ( CqlValue :: Varint ( t. value. to_bigint ( ) . unwrap ( ) . into( ) ) , value) ;
10921111 }
10931112 }
10941113
0 commit comments