@@ -9,14 +9,9 @@ mod tests {
99 use crate :: reader:: { Wkb , MAX_WKB_NESTING_DEPTH } ;
1010
1111 // --- Helper Functions ---
12- fn make_wkb_header ( typ : WkbType , is_little_endian : bool ) -> Vec < u8 > {
13- let type_id = u32:: from ( typ) ;
14- let mut header = vec ! [ if is_little_endian { 0x01 } else { 0x00 } ] ;
15- if is_little_endian {
16- header. extend_from_slice ( & type_id. to_le_bytes ( ) ) ;
17- } else {
18- header. extend_from_slice ( & type_id. to_be_bytes ( ) ) ;
19- }
12+ fn make_wkb_header ( typ : WkbType ) -> Vec < u8 > {
13+ let mut header = vec ! [ 0x01 ] ; // little endian
14+ header. extend_from_slice ( & u32:: from ( typ) . to_le_bytes ( ) ) ;
2015 header
2116 }
2217
@@ -38,15 +33,15 @@ mod tests {
3833 // --- Point WKB Errors ---
3934 #[ test]
4035 fn test_wkb_point_xy_buffer_too_short_for_coords ( ) {
41- let mut wkb_data = make_wkb_header ( Point ( Xy ) , true ) ; // 5 bytes
36+ let mut wkb_data = make_wkb_header ( Point ( Xy ) ) ; // 5 bytes
4237 wkb_data. extend_from_slice ( & [ 0u8 ; 8 ] ) ; // Only 8 bytes for coords, need 16
4338 let result = Wkb :: try_new ( & wkb_data) ;
4439 assert ! ( result. is_err( ) ) ;
4540 }
4641
4742 #[ test]
4843 fn test_wkb_point_xyz_buffer_too_short_for_coords ( ) {
49- let mut wkb_data = make_wkb_header ( Point ( Xyz ) , true ) ; // 5 bytes
44+ let mut wkb_data = make_wkb_header ( Point ( Xyz ) ) ; // 5 bytes
5045 wkb_data. extend_from_slice ( & [ 0u8 ; 16 ] ) ; // Only 16 bytes for coords, need 24
5146 let result = Wkb :: try_new ( & wkb_data) ;
5247 assert ! ( result. is_err( ) ) ;
@@ -56,14 +51,14 @@ mod tests {
5651 #[ test]
5752 fn test_wkb_linestring_buffer_too_short_for_num_points ( ) {
5853 // Missing the num_points field (4 bytes)
59- let wkb_data = make_wkb_header ( LineString ( Xy ) , true ) ;
54+ let wkb_data = make_wkb_header ( LineString ( Xy ) ) ;
6055 let result = Wkb :: try_new ( & wkb_data) ;
6156 assert ! ( result. is_err( ) ) ;
6257 }
6358
6459 #[ test]
6560 fn test_wkb_linestring_num_points_too_large_for_buffer ( ) {
66- let mut wkb_data = make_wkb_header ( LineString ( Xy ) , true ) ; // 5 bytes
61+ let mut wkb_data = make_wkb_header ( LineString ( Xy ) ) ; // 5 bytes
6762 wkb_data. extend_from_slice ( & 10u32 . to_le_bytes ( ) ) ; // 10 points declared
6863 wkb_data. extend_from_slice ( & 1.0f64 . to_le_bytes ( ) ) ; // Only 1 point's data (16 bytes)
6964 wkb_data. extend_from_slice ( & 2.0f64 . to_le_bytes ( ) ) ;
@@ -74,7 +69,7 @@ mod tests {
7469
7570 #[ test]
7671 fn test_wkb_linestring_invalid_num_points_value ( ) {
77- let mut wkb_data = make_wkb_header ( LineString ( Xy ) , true ) ;
72+ let mut wkb_data = make_wkb_header ( LineString ( Xy ) ) ;
7873 // u32::MAX num_points would cause massive size calculation if not for try_into error first
7974 wkb_data. extend_from_slice ( & u32:: MAX . to_le_bytes ( ) ) ;
8075 let result = Wkb :: try_new ( & wkb_data) ;
@@ -85,14 +80,14 @@ mod tests {
8580 #[ test]
8681 fn test_wkb_polygon_buffer_too_short_for_num_rings ( ) {
8782 // Missing the num_rings field (4 bytes)
88- let wkb_data = make_wkb_header ( Polygon ( Xy ) , true ) ;
83+ let wkb_data = make_wkb_header ( Polygon ( Xy ) ) ;
8984 let result = Wkb :: try_new ( & wkb_data) ;
9085 assert ! ( result. is_err( ) ) ;
9186 }
9287
9388 #[ test]
9489 fn test_wkb_polygon_buffer_too_short_for_ring_num_points ( ) {
95- let mut wkb_data = make_wkb_header ( Polygon ( Xy ) , true ) ;
90+ let mut wkb_data = make_wkb_header ( Polygon ( Xy ) ) ;
9691 // 1 ring, but the ring's num_points (4 bytes) is missing
9792 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ;
9893 let result = Wkb :: try_new ( & wkb_data) ;
@@ -101,7 +96,7 @@ mod tests {
10196
10297 #[ test]
10398 fn test_wkb_polygon_ring_num_points_too_large_for_buffer ( ) {
104- let mut wkb_data = make_wkb_header ( Polygon ( Xy ) , true ) ;
99+ let mut wkb_data = make_wkb_header ( Polygon ( Xy ) ) ;
105100 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ;
106101 // 1 ring declaring 4 points (closed), but only 1 point's worth of data follows
107102 wkb_data. extend_from_slice ( & 4u32 . to_le_bytes ( ) ) ;
@@ -117,14 +112,14 @@ mod tests {
117112 #[ test]
118113 fn test_wkb_multipoint_buffer_too_short_for_num_multipoints_header ( ) {
119114 // Missing num_points for the MultiPoint itself (4 bytes)
120- let wkb_data = make_wkb_header ( MultiPoint ( Xy ) , true ) ;
115+ let wkb_data = make_wkb_header ( MultiPoint ( Xy ) ) ;
121116 let result = Wkb :: try_new ( & wkb_data) ;
122117 assert ! ( result. is_err( ) ) ;
123118 }
124119
125120 #[ test]
126121 fn test_wkb_multipoint_buffer_too_short_for_contained_point_header ( ) {
127- let mut wkb_data = make_wkb_header ( MultiPoint ( Xy ) , true ) ;
122+ let mut wkb_data = make_wkb_header ( MultiPoint ( Xy ) ) ;
128123 // 1 point, but its WKB header (5 bytes: 1 byte order + 4 type) is missing
129124 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ;
130125 let result = Wkb :: try_new ( & wkb_data) ;
@@ -133,9 +128,9 @@ mod tests {
133128
134129 #[ test]
135130 fn test_wkb_multipoint_buffer_too_short_for_contained_point_coords ( ) {
136- let mut wkb_data = make_wkb_header ( MultiPoint ( Xy ) , true ) ;
131+ let mut wkb_data = make_wkb_header ( MultiPoint ( Xy ) ) ;
137132 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ; // 1 point in multipoint
138- wkb_data. extend ( make_wkb_header ( Point ( Xy ) , true ) ) ; // Contained Point header (5 bytes)
133+ wkb_data. extend ( make_wkb_header ( Point ( Xy ) ) ) ; // Contained Point header (5 bytes)
139134 wkb_data. extend_from_slice ( & [ 0u8 ; 8 ] ) ; // Only 8 bytes for contained point's coords, needs 16
140135 let result = Wkb :: try_new ( & wkb_data) ;
141136 assert ! ( result. is_err( ) ) ;
@@ -145,14 +140,14 @@ mod tests {
145140 #[ test]
146141 fn test_wkb_multilinestring_buffer_too_short_for_num_multilinestrings_header ( ) {
147142 // Missing num_linestrings for the MultiLineString itself (4 bytes)
148- let wkb_data = make_wkb_header ( MultiLineString ( Xy ) , true ) ;
143+ let wkb_data = make_wkb_header ( MultiLineString ( Xy ) ) ;
149144 let result = Wkb :: try_new ( & wkb_data) ;
150145 assert ! ( result. is_err( ) ) ;
151146 }
152147
153148 #[ test]
154149 fn test_wkb_multilinestring_buffer_too_short_for_contained_linestring_header ( ) {
155- let mut wkb_data = make_wkb_header ( MultiLineString ( Xy ) , true ) ;
150+ let mut wkb_data = make_wkb_header ( MultiLineString ( Xy ) ) ;
156151 // 1 linestring, but its WKB header (5 bytes) is missing
157152 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ;
158153 let result = Wkb :: try_new ( & wkb_data) ;
@@ -161,10 +156,10 @@ mod tests {
161156
162157 #[ test]
163158 fn test_wkb_multilinestring_buffer_too_short_for_contained_linestring_num_points ( ) {
164- let mut wkb_data = make_wkb_header ( MultiLineString ( Xy ) , true ) ;
159+ let mut wkb_data = make_wkb_header ( MultiLineString ( Xy ) ) ;
165160 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ;
166161 // The contained LineString has a header, but its num_points (4 bytes) is missing
167- wkb_data. extend ( make_wkb_header ( LineString ( Xy ) , true ) ) ;
162+ wkb_data. extend ( make_wkb_header ( LineString ( Xy ) ) ) ;
168163 let result = Wkb :: try_new ( & wkb_data) ;
169164 assert ! ( result. is_err( ) ) ;
170165 }
@@ -173,14 +168,14 @@ mod tests {
173168 #[ test]
174169 fn test_wkb_multipolygon_buffer_too_short_for_num_multipolygons_header ( ) {
175170 // Missing num_polygons for the MultiPolygon itself (4 bytes)
176- let wkb_data = make_wkb_header ( MultiPolygon ( Xy ) , true ) ;
171+ let wkb_data = make_wkb_header ( MultiPolygon ( Xy ) ) ;
177172 let result = Wkb :: try_new ( & wkb_data) ;
178173 assert ! ( result. is_err( ) ) ;
179174 }
180175
181176 #[ test]
182177 fn test_wkb_multipolygon_buffer_too_short_for_contained_polygon_header ( ) {
183- let mut wkb_data = make_wkb_header ( MultiPolygon ( Xy ) , true ) ;
178+ let mut wkb_data = make_wkb_header ( MultiPolygon ( Xy ) ) ;
184179 // 1 polygon, but its WKB header (5 bytes) is missing
185180 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ;
186181 let result = Wkb :: try_new ( & wkb_data) ;
@@ -191,14 +186,14 @@ mod tests {
191186 #[ test]
192187 fn test_wkb_geomcollection_buffer_too_short_for_num_geometries_header ( ) {
193188 // Missing num_geometries for the GeometryCollection itself (4 bytes)
194- let wkb_data = make_wkb_header ( GeometryCollection ( Xy ) , true ) ;
189+ let wkb_data = make_wkb_header ( GeometryCollection ( Xy ) ) ;
195190 let result = Wkb :: try_new ( & wkb_data) ;
196191 assert ! ( result. is_err( ) ) ;
197192 }
198193
199194 #[ test]
200195 fn test_wkb_geomcollection_buffer_too_short_for_contained_geometry_header ( ) {
201- let mut wkb_data = make_wkb_header ( GeometryCollection ( Xy ) , true ) ;
196+ let mut wkb_data = make_wkb_header ( GeometryCollection ( Xy ) ) ;
202197 // 1 geometry, but its WKB header (e.g. a Point, 5 bytes) is missing
203198 wkb_data. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ;
204199 let result = Wkb :: try_new ( & wkb_data) ;
@@ -211,10 +206,10 @@ mod tests {
211206 // `levels` GeometryCollections each holding a single child, wrapping a terminal Point.
212207 let mut buf = Vec :: new ( ) ;
213208 for _ in 0 ..levels {
214- buf. extend ( make_wkb_header ( GeometryCollection ( Xy ) , true ) ) ;
209+ buf. extend ( make_wkb_header ( GeometryCollection ( Xy ) ) ) ;
215210 buf. extend_from_slice ( & 1u32 . to_le_bytes ( ) ) ; // one geometry
216211 }
217- buf. extend ( make_wkb_header ( Point ( Xy ) , true ) ) ;
212+ buf. extend ( make_wkb_header ( Point ( Xy ) ) ) ;
218213 buf. extend_from_slice ( & 0.0f64 . to_le_bytes ( ) ) ;
219214 buf. extend_from_slice ( & 0.0f64 . to_le_bytes ( ) ) ;
220215 buf
@@ -253,7 +248,7 @@ mod tests {
253248 // A header claiming u32::MAX elements must not pre-allocate gigabytes before the (missing)
254249 // body is read; it should just fail to read the first element.
255250 fn assert_huge_count_errs ( typ : WkbType ) {
256- let mut wkb_data = make_wkb_header ( typ, true ) ;
251+ let mut wkb_data = make_wkb_header ( typ) ;
257252 wkb_data. extend_from_slice ( & u32:: MAX . to_le_bytes ( ) ) ;
258253 assert ! ( Wkb :: try_new( & wkb_data) . is_err( ) ) ;
259254 }
0 commit comments