18
18
from tests .utils import TestCases , assert_to_from_dict , get_temp_dir
19
19
20
20
21
+ class LabelTypeTest (unittest .TestCase ):
22
+ def test_to_str (self ) -> None :
23
+ self .assertEqual (str (LabelType .VECTOR ), "vector" )
24
+ self .assertEqual (str (LabelType .RASTER ), "raster" )
25
+
26
+
27
+ class LabelRelTypeTest (unittest .TestCase ):
28
+ def test_rel_types (self ) -> None :
29
+ self .assertEqual (str (LabelRelType .SOURCE ), "source" )
30
+
31
+
21
32
class LabelTest (unittest .TestCase ):
22
33
def setUp (self ) -> None :
23
34
self .maxDiff = None
@@ -28,9 +39,6 @@ def setUp(self) -> None:
28
39
"data-files/label/label-example-2.json"
29
40
)
30
41
31
- def test_rel_types (self ) -> None :
32
- self .assertEqual (str (LabelRelType .SOURCE ), "source" )
33
-
34
42
def test_to_from_dict (self ) -> None :
35
43
with open (self .label_example_1_uri , encoding = "utf-8" ) as f :
36
44
label_example_1_dict = json .load (f )
@@ -163,7 +171,8 @@ def test_label_classes(self) -> None:
163
171
LabelClasses .create (name = "label" , classes = ["seven" , "eight" ]),
164
172
]
165
173
166
- LabelExtension .ext (label_item ).label_classes = new_classes
174
+ label_ext = LabelExtension .ext (label_item )
175
+ label_ext .label_classes = new_classes
167
176
self .assertEqual (
168
177
[
169
178
class_name
@@ -173,6 +182,13 @@ def test_label_classes(self) -> None:
173
182
["five" , "six" , "seven" , "eight" ],
174
183
)
175
184
185
+ self .assertListEqual (
186
+ [lc .name for lc in label_ext .label_classes ], ["label2" , "label" ]
187
+ )
188
+
189
+ first_lc = label_ext .label_classes [0 ]
190
+ self .assertEqual ("<ClassObject classes=five,six>" , first_lc .__repr__ ())
191
+
176
192
label_item .validate ()
177
193
178
194
def test_label_tasks (self ) -> None :
@@ -219,12 +235,13 @@ def test_label_overviews(self) -> None:
219
235
220
236
label_counts = get_opt (label_overviews [0 ].counts )
221
237
self .assertEqual (label_counts [1 ].count , 17 )
222
- fisrt_overview_counts = get_opt (label_ext .label_overviews )[0 ].counts
223
- assert fisrt_overview_counts is not None
224
- fisrt_overview_counts [1 ].count = 18
238
+ first_overview_counts = get_opt (label_ext .label_overviews )[0 ].counts
239
+ assert first_overview_counts is not None
240
+ first_overview_counts [1 ].count = 18
225
241
self .assertEqual (
226
242
label_item .properties ["label:overviews" ][0 ]["counts" ][1 ]["count" ], 18
227
243
)
244
+ self .assertEqual (first_overview_counts [1 ].name , "two" )
228
245
229
246
label_statistics = get_opt (label_overviews [1 ].statistics )
230
247
self .assertEqual (label_statistics [0 ].name , "mean" )
@@ -271,3 +288,75 @@ def test_label_overviews(self) -> None:
271
288
)
272
289
273
290
label_item .validate ()
291
+
292
+ def test_merge_label_overviews (self ) -> None :
293
+
294
+ overview_1 = LabelOverview .create (
295
+ property_key = "label" ,
296
+ counts = [
297
+ LabelCount .create (name = "water" , count = 25 ),
298
+ LabelCount .create (name = "land" , count = 17 ),
299
+ ],
300
+ )
301
+ overview_2 = LabelOverview .create (
302
+ property_key = "label" ,
303
+ counts = [
304
+ LabelCount .create (name = "water" , count = 10 ),
305
+ LabelCount .create (name = "unknown" , count = 4 ),
306
+ ],
307
+ )
308
+ merged_overview = overview_1 .merge_counts (overview_2 )
309
+
310
+ merged_counts = get_opt (merged_overview .counts )
311
+
312
+ water_count = next (c for c in merged_counts if c .name == "water" )
313
+ land_count = next (c for c in merged_counts if c .name == "land" )
314
+ unknown_count = next (c for c in merged_counts if c .name == "unknown" )
315
+
316
+ self .assertEqual (35 , water_count .count )
317
+ self .assertEqual (17 , land_count .count )
318
+ self .assertEqual (4 , unknown_count .count )
319
+
320
+ def test_merge_label_overviews_empty_counts (self ) -> None :
321
+ # Right side is empty
322
+ overview_1 = LabelOverview .create (
323
+ property_key = "label" ,
324
+ counts = [
325
+ LabelCount .create (name = "water" , count = 25 ),
326
+ LabelCount .create (name = "land" , count = 17 ),
327
+ ],
328
+ )
329
+ overview_2 = LabelOverview .create (
330
+ property_key = "label" ,
331
+ counts = None ,
332
+ )
333
+
334
+ merged_overview_1 = overview_1 .merge_counts (overview_2 )
335
+ expected_counts = [c .to_dict () for c in get_opt (overview_1 .counts )]
336
+ actual_counts = [c .to_dict () for c in get_opt (merged_overview_1 .counts )]
337
+ self .assertListEqual (expected_counts , actual_counts )
338
+
339
+ # Left side is empty
340
+ merged_overview_2 = overview_2 .merge_counts (overview_1 )
341
+ expected_counts = [c .to_dict () for c in get_opt (overview_1 .counts )]
342
+ actual_counts = [c .to_dict () for c in get_opt (merged_overview_2 .counts )]
343
+ self .assertEqual (expected_counts , actual_counts )
344
+
345
+ def test_merge_label_overviews_error (self ) -> None :
346
+ overview_1 = LabelOverview .create (
347
+ property_key = "label" ,
348
+ counts = [
349
+ LabelCount .create (name = "water" , count = 25 ),
350
+ LabelCount .create (name = "land" , count = 17 ),
351
+ ],
352
+ )
353
+ overview_2 = LabelOverview .create (
354
+ property_key = "not label" ,
355
+ counts = [
356
+ LabelCount .create (name = "water" , count = 10 ),
357
+ LabelCount .create (name = "unknown" , count = 4 ),
358
+ ],
359
+ )
360
+
361
+ with self .assertRaises (AssertionError ):
362
+ _ = overview_1 .merge_counts (overview_2 )
0 commit comments