@@ -63,3 +63,97 @@ xmacro! {
6363 assert_eq!( hv. as_slice( ) , $result) ;
6464 }
6565}
66+
67+ // testing the header_vec!() macro
68+ #[ test]
69+ fn test_empty_with_default_header ( ) {
70+ let v: HeaderVec < ( ) , i32 > = header_vec ! [ ] ;
71+ assert_eq ! ( * v, ( ) ) ;
72+ assert ! ( v. is_empty( ) ) ;
73+ }
74+
75+ #[ test]
76+ fn test_empty_with_custom_header ( ) {
77+ let v: HeaderVec < & str , i32 > = header_vec ! ( "header" ; [ ] ) ;
78+ assert_eq ! ( * v, "header" ) ;
79+ assert ! ( v. is_empty( ) ) ;
80+ }
81+
82+ #[ test]
83+ fn test_values_with_custom_header ( ) {
84+ let v = header_vec ! ( "header" ; [ 1 , 2 , 3 ] ) ;
85+ assert_eq ! ( * v, "header" ) ;
86+ assert_eq ! ( v. as_slice( ) , & [ 1 , 2 , 3 ] ) ;
87+ assert_eq ! ( v. len( ) , 3 ) ;
88+
89+ let v = header_vec ! ( "header" ; [ 1 , 2 , 3 , ] ) ;
90+ assert_eq ! ( * v, "header" ) ;
91+ assert_eq ! ( v. as_slice( ) , & [ 1 , 2 , 3 ] ) ;
92+ }
93+
94+ #[ test]
95+ fn test_repetition_with_custom_header ( ) {
96+ let v = header_vec ! ( "header" ; [ 42 ; 5 ] ) ;
97+ assert_eq ! ( * v, "header" ) ;
98+ assert_eq ! ( v. as_slice( ) , & [ 42 , 42 , 42 , 42 , 42 ] ) ;
99+ assert_eq ! ( v. len( ) , 5 ) ;
100+ }
101+
102+ #[ test]
103+ fn test_repetition_with_default_header ( ) {
104+ let v = header_vec ! [ 42 ; 5 ] ;
105+ assert_eq ! ( * v, ( ) ) ;
106+ assert_eq ! ( v. as_slice( ) , & [ 42 , 42 , 42 , 42 , 42 ] ) ;
107+ assert_eq ! ( v. len( ) , 5 ) ;
108+ }
109+
110+ #[ test]
111+ fn test_values_with_default_header ( ) {
112+ let v = header_vec ! [ 1 , 2 , 3 ] ;
113+ assert_eq ! ( * v, ( ) ) ;
114+ assert_eq ! ( v. as_slice( ) , & [ 1 , 2 , 3 ] ) ;
115+ assert_eq ! ( v. len( ) , 3 ) ;
116+
117+ let v = header_vec ! [ 1 , 2 , 3 , ] ;
118+ assert_eq ! ( * v, ( ) ) ;
119+ assert_eq ! ( v. as_slice( ) , & [ 1 , 2 , 3 ] ) ;
120+ }
121+
122+ #[ test]
123+ fn test_non_copy_types ( ) {
124+ let v = header_vec ! ( "header" ; [ String :: from( "hello" ) , String :: from( "world" ) ] ) ;
125+ assert_eq ! ( * v, "header" ) ;
126+ assert_eq ! (
127+ v. as_slice( ) ,
128+ & [ String :: from( "hello" ) , String :: from( "world" ) ]
129+ ) ;
130+
131+ let v = header_vec ! [ String :: from( "repeated" ) ; 2 ] ;
132+ assert_eq ! ( * v, ( ) ) ;
133+ assert_eq ! (
134+ v. as_slice( ) ,
135+ & [ String :: from( "repeated" ) , String :: from( "repeated" ) ]
136+ ) ;
137+ }
138+
139+ #[ test]
140+ fn test_zero_repetitions ( ) {
141+ let v: HeaderVec < ( ) , i32 > = header_vec ! [ 42 ; 0 ] ;
142+ assert_eq ! ( * v, ( ) ) ;
143+ assert ! ( v. is_empty( ) ) ;
144+
145+ let v: HeaderVec < & str , i32 > = header_vec ! ( "header" ; [ 42 ; 0 ] ) ;
146+ assert_eq ! ( * v, "header" ) ;
147+ assert ! ( v. is_empty( ) ) ;
148+ }
149+
150+ #[ test]
151+ fn test_single_element ( ) {
152+ let v = header_vec ! [ 42 ] ;
153+ assert_eq ! ( * v, ( ) ) ;
154+ assert_eq ! ( v. as_slice( ) , & [ 42 ] ) ;
155+
156+ let v = header_vec ! ( "header" ; [ 42 ] ) ;
157+ assert_eq ! ( * v, "header" ) ;
158+ assert_eq ! ( v. as_slice( ) , & [ 42 ] ) ;
159+ }
0 commit comments