@@ -938,6 +938,54 @@ mod tests {
938
938
use std:: io:: mem:: MemWriter ;
939
939
use std:: option:: { None , Option, Some} ;
940
940
941
+ #[ test]
942
+ fn test_vuint_at( ) {
943
+ let data = [
944
+ 0x80 ,
945
+ 0xff ,
946
+ 0x40 , 0x00 ,
947
+ 0x7f , 0xff ,
948
+ 0x20 , 0x00 , 0x00 ,
949
+ 0x3f , 0xff , 0xff ,
950
+ 0x10 , 0x00 , 0x00 , 0x00 ,
951
+ 0x1f , 0xff , 0xff , 0xff
952
+ ] ;
953
+
954
+ let mut res: reader:: Res ;
955
+
956
+ // Class A
957
+ res = reader:: vuint_at( data, 0 ) ;
958
+ assert_eq ! ( res. val, 0 ) ;
959
+ assert_eq ! ( res. next, 1 ) ;
960
+ res = reader:: vuint_at( data, res. next) ;
961
+ assert_eq ! ( res. val, ( 1 << 7 ) - 1 ) ;
962
+ assert_eq ! ( res. next, 2 ) ;
963
+
964
+ // Class B
965
+ res = reader:: vuint_at( data, res. next) ;
966
+ assert_eq ! ( res. val, 0 ) ;
967
+ assert_eq ! ( res. next, 4 ) ;
968
+ res = reader:: vuint_at( data, res. next) ;
969
+ assert_eq ! ( res. val, ( 1 << 14 ) - 1 ) ;
970
+ assert_eq ! ( res. next, 6 ) ;
971
+
972
+ // Class C
973
+ res = reader:: vuint_at( data, res. next) ;
974
+ assert_eq ! ( res. val, 0 ) ;
975
+ assert_eq ! ( res. next, 9 ) ;
976
+ res = reader:: vuint_at( data, res. next) ;
977
+ assert_eq ! ( res. val, ( 1 << 21 ) - 1 ) ;
978
+ assert_eq ! ( res. next, 12 ) ;
979
+
980
+ // Class D
981
+ res = reader:: vuint_at( data, res. next) ;
982
+ assert_eq ! ( res. val, 0 ) ;
983
+ assert_eq ! ( res. next, 16 ) ;
984
+ res = reader:: vuint_at( data, res. next) ;
985
+ assert_eq ! ( res. val, ( 1 << 28 ) - 1 ) ;
986
+ assert_eq ! ( res. next, 20 ) ;
987
+ }
988
+
941
989
#[ test]
942
990
fn test_option_int( ) {
943
991
fn test_v( v: Option < int > ) {
0 commit comments