@@ -1023,3 +1023,70 @@ fn drain_keep_rest() {
10231023
10241024 assert_eq ! ( a, SmallVec :: <[ i32 ; 3 ] >:: from_slice( & [ 1i32 , 3 , 5 , 6 , 7 , 8 ] ) ) ;
10251025}
1026+
1027+ #[ cfg( all( feature = "get-size" , target_pointer_width = "64" ) ) ]
1028+ mod get_size {
1029+ use super :: * ;
1030+
1031+ #[ test]
1032+ fn end_to_end1 ( ) {
1033+ use :: get_size:: GetSize ;
1034+
1035+ let mut a: SmallVec < [ i32 ; 2 ] > = smallvec ! [ ] ;
1036+ assert ! ( !a. spilled( ) ) ;
1037+ assert_eq ! ( a. len( ) , 0 ) ;
1038+ assert_eq ! ( a. get_size( ) , 24 ) ;
1039+ assert_eq ! ( a. get_heap_size( ) , 0 ) ;
1040+
1041+ a. push ( 0 ) ;
1042+ assert_eq ! ( a. len( ) , 1 ) ;
1043+ assert ! ( !a. spilled( ) ) ;
1044+ assert_eq ! ( a. get_size( ) , 24 ) ;
1045+ assert_eq ! ( a. get_heap_size( ) , 0 ) ;
1046+
1047+ a. push ( 1 ) ;
1048+ assert_eq ! ( a. len( ) , 2 ) ;
1049+ assert ! ( !a. spilled( ) ) ;
1050+ assert_eq ! ( a. get_size( ) , 24 ) ;
1051+ assert_eq ! ( a. get_heap_size( ) , 0 ) ;
1052+
1053+ a. push ( 2 ) ;
1054+ assert_eq ! ( a. len( ) , 3 ) ;
1055+ assert ! ( a. spilled( ) ) ;
1056+ assert_eq ! ( a. get_size( ) , 40 ) ;
1057+ assert_eq ! ( a. get_heap_size( ) , 16 ) ;
1058+
1059+ a. push ( 3 ) ;
1060+ assert_eq ! ( a. len( ) , 4 ) ;
1061+ assert ! ( a. spilled( ) ) ;
1062+ assert_eq ! ( a. get_size( ) , 40 ) ;
1063+ assert_eq ! ( a. get_heap_size( ) , 16 ) ;
1064+
1065+ a. push ( 4 ) ;
1066+ assert_eq ! ( a. len( ) , 5 ) ;
1067+ assert ! ( a. spilled( ) ) ;
1068+ assert_eq ! ( a. get_size( ) , 56 ) ;
1069+ assert_eq ! ( a. get_heap_size( ) , 32 ) ;
1070+
1071+ }
1072+
1073+ #[ cfg( not( feature = "union" ) ) ]
1074+ #[ test]
1075+ fn stack_size_no_union1 ( ) {
1076+ use :: get_size:: GetSize ;
1077+
1078+ assert_eq ! ( SmallVec :: <[ i32 ; 2 ] >:: get_stack_size( ) , 24 ) ;
1079+ assert_eq ! ( SmallVec :: <[ i32 ; 10 ] >:: get_stack_size( ) , 56 ) ;
1080+ }
1081+
1082+ #[ cfg( feature="union" ) ]
1083+ #[ test]
1084+ fn stack_size_union1 ( ) {
1085+ use :: get_size:: GetSize ;
1086+
1087+ assert_eq ! ( SmallVec :: <[ i32 ; 2 ] >:: get_stack_size( ) , 24 ) ;
1088+ assert_eq ! ( SmallVec :: <[ i32 ; 10 ] >:: get_stack_size( ) , 48 ) ;
1089+ }
1090+
1091+ }
1092+
0 commit comments