@@ -98,6 +98,16 @@ TEST(MetadataTest, MetadataTestReadJSONParsing) {
98
98
metadata.data = " {}" ;
99
99
metadata.size_bytes = 2 ;
100
100
EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), GEOARROW_OK);
101
+
102
+ // Incomplete 'null'
103
+ metadata.data = " {\" key\" : n" ;
104
+ metadata.size_bytes = strlen (metadata.data );
105
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), EINVAL);
106
+
107
+ // Enough characters but not actually 'null'
108
+ metadata.data = " {\" key\" : nincompoop}" ;
109
+ metadata.size_bytes = strlen (metadata.data );
110
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), EINVAL);
101
111
}
102
112
103
113
TEST (MetadataTest, MetadataTestReadJSON) {
@@ -123,6 +133,48 @@ TEST(MetadataTest, MetadataTestReadJSON) {
123
133
EXPECT_EQ (metadata_view.crs_type , GEOARROW_CRS_TYPE_UNKNOWN);
124
134
EXPECT_EQ (std::string (metadata_view.crs .data , metadata_view.crs .size_bytes ),
125
135
" \" a string\" " );
136
+
137
+ const char * json_crs_none = " {\" crs\" :null}" ;
138
+ metadata.data = json_crs_none;
139
+ metadata.size_bytes = strlen (json_crs_none);
140
+
141
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), GEOARROW_OK);
142
+ EXPECT_EQ (metadata_view.edge_type , GEOARROW_EDGE_TYPE_PLANAR);
143
+ EXPECT_EQ (metadata_view.crs_type , GEOARROW_CRS_TYPE_NONE);
144
+ EXPECT_EQ (metadata_view.crs .size_bytes , 0 );
145
+
146
+ const char * json_crs_invalid = " {\" crs\" :[]}" ;
147
+ metadata.data = json_crs_invalid;
148
+ metadata.size_bytes = strlen (json_crs_invalid);
149
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), EINVAL);
150
+
151
+ const char * json_edges_none = " {\" edges\" :null}" ;
152
+ metadata.data = json_edges_none;
153
+ metadata.size_bytes = strlen (json_edges_none);
154
+
155
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), GEOARROW_OK);
156
+ EXPECT_EQ (metadata_view.edge_type , GEOARROW_EDGE_TYPE_PLANAR);
157
+ EXPECT_EQ (metadata_view.crs_type , GEOARROW_CRS_TYPE_NONE);
158
+ EXPECT_EQ (metadata_view.crs .size_bytes , 0 );
159
+
160
+ const char * json_edges_planar = " {\" edges\" :\" planar\" }" ;
161
+ metadata.data = json_edges_planar;
162
+ metadata.size_bytes = strlen (json_edges_planar);
163
+
164
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), GEOARROW_OK);
165
+ EXPECT_EQ (metadata_view.edge_type , GEOARROW_EDGE_TYPE_PLANAR);
166
+ EXPECT_EQ (metadata_view.crs_type , GEOARROW_CRS_TYPE_NONE);
167
+ EXPECT_EQ (metadata_view.crs .size_bytes , 0 );
168
+
169
+ const char * json_edges_invalid = " {\" edges\" :\" unsupported value\" }" ;
170
+ metadata.data = json_edges_invalid;
171
+ metadata.size_bytes = strlen (json_edges_invalid);
172
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), EINVAL);
173
+
174
+ const char * json_edges_invalid_type = " {\" edges\" :true}" ;
175
+ metadata.data = json_edges_invalid_type;
176
+ metadata.size_bytes = strlen (json_edges_invalid_type);
177
+ EXPECT_EQ (GeoArrowMetadataViewInit (&metadata_view, metadata, &error), EINVAL);
126
178
}
127
179
128
180
TEST (MetadataTest, MetadataTestSetMetadata) {
0 commit comments