-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_annotation_BRWT.cpp
470 lines (373 loc) · 21.3 KB
/
test_annotation_BRWT.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
#include <random>
#include "gtest/gtest.h"
#include "static_annotators_def.hpp"
#include "annotate_column_compressed.hpp"
#include "annotation_converters.hpp"
#include "utils.hpp"
const std::string test_data_dir = "../tests/data";
const std::string test_dump_basename = test_data_dir + "/dump_test";
const std::string test_dump_basename_vec_bad = test_dump_basename + "_bad_filename";
const std::string test_dump_basename_vec_good = test_dump_basename + "_column_compressed";
using annotate::BRWTCompressed;
TEST(BRWTCompressed, EmptyConstructor) {
auto annotation = annotate::convert_to_simple_BRWT<BRWTCompressed<>>(
annotate::ColumnCompressed<>(0)
);
EXPECT_EQ(0u, annotation->num_labels());
EXPECT_EQ(0u, annotation->num_objects());
}
// TEST(ColumnCompressed, add_label) {
// annotate::ColumnCompressed<> annotation(5);
// annotation.add_label(0, "0");
// annotation.add_label(1, "0");
// annotation.add_label(2, "1");
// annotation.add_label(1, "2");
// EXPECT_EQ(convert_to_set({"0"}), convert_to_set(annotation.get(0)));
// EXPECT_EQ(convert_to_set({"0", "2"}), convert_to_set(annotation.get(1)));
// EXPECT_EQ(convert_to_set({"1"}), convert_to_set(annotation.get(2)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation.get(3)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation.get(4)));
// }
// TEST(ColumnCompressed, set_labels) {
// std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
// new annotate::ColumnCompressed<>(5)
// );
// annotation->set_labels(0, { "Label0", "Label2", "Label8" });
// annotation->set_labels(2, { "Label1", "Label2" });
// annotation->set_labels(4, { "Label8" });
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// EXPECT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// }
// TEST(ColumnCompressed, insert_no_empty_rows) {
// std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
// new annotate::ColumnCompressed<>(5)
// );
// annotation->set_labels(0, { "Label0", "Label2", "Label8" });
// annotation->set_labels(2, { "Label1", "Label2" });
// annotation->set_labels(4, { "Label8" });
// ASSERT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// ASSERT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// ASSERT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// annotation->insert_rows({});
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// EXPECT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// }
// TEST(ColumnCompressed, insert_first_column_to_empty_annotation) {
// std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
// new annotate::ColumnCompressed<>(0)
// );
// ASSERT_EQ(0u, annotation->num_labels());
// annotation->insert_rows({ 0, });
// ASSERT_EQ(0u, annotation->num_labels());
// annotation->set_labels(0, { "Label0", "Label2", "Label8" });
// ASSERT_EQ(3u, annotation->num_labels());
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// }
// TEST(ColumnCompressed, insert_one_empty_row) {
// std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
// new annotate::ColumnCompressed<>(5)
// );
// annotation->set_labels(0, { "Label0", "Label2", "Label8" });
// annotation->set_labels(2, { "Label1", "Label2" });
// annotation->set_labels(4, { "Label8" });
// ASSERT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// ASSERT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// ASSERT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// annotation->insert_rows({ 4, });
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// EXPECT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(4)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(5)));
// }
// TEST(ColumnCompressed, insert_first_row) {
// std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
// new annotate::ColumnCompressed<>(5)
// );
// annotation->set_labels(0, { "Label0", "Label2", "Label8" });
// annotation->set_labels(2, { "Label1", "Label2" });
// annotation->set_labels(4, { "Label8" });
// ASSERT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// ASSERT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// ASSERT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// annotation->insert_rows({ 0, });
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(0)));
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(1)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(2)));
// EXPECT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(3)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(4)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(5)));
// }
// TEST(ColumnCompressed, insert_last_row) {
// std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
// new annotate::ColumnCompressed<>(5)
// );
// annotation->set_labels(0, { "Label0", "Label2", "Label8" });
// annotation->set_labels(2, { "Label1", "Label2" });
// annotation->set_labels(4, { "Label8" });
// ASSERT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// ASSERT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// ASSERT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// annotation->insert_rows({ 5, });
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// EXPECT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(5)));
// }
// TEST(ColumnCompressed, insert_empty_rows) {
// std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
// new annotate::ColumnCompressed<>(5)
// );
// EXPECT_EQ(5u, annotation->num_objects());
// annotation->set_labels(0, { "Label0", "Label2", "Label8" });
// annotation->set_labels(2, { "Label1", "Label2" });
// annotation->set_labels(4, { "Label8" });
// ASSERT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// ASSERT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(2)));
// ASSERT_EQ(convert_to_set({}), convert_to_set(annotation->get(3)));
// ASSERT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(4)));
// annotation->insert_rows({ 1, 2, 4, 5 });
// EXPECT_EQ(9u, annotation->num_objects());
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation->get_labels(0)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(1)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(2)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get_labels(3)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(4)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(5)));
// EXPECT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation->get_labels(6)));
// EXPECT_EQ(convert_to_set({}), convert_to_set(annotation->get(7)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation->get_labels(8)));
// }
TEST(BRWTCompressed, Serialization) {
{
annotate::ColumnCompressed<> annotation(5);
annotation.set_labels(0, { "Label0", "Label2", "Label8" });
annotation.set_labels(2, { "Label1", "Label2" });
annotation.set_labels(4, { "Label8" });
auto brwt_anno = annotate::convert_to_simple_BRWT<BRWTCompressed<>>(
std::move(annotation)
);
brwt_anno->serialize(test_dump_basename_vec_good);
}
{
annotate::BRWTCompressed<> annotation;
ASSERT_FALSE(annotation.load(test_dump_basename_vec_bad));
ASSERT_TRUE(annotation.load(test_dump_basename_vec_good));
EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation.get(0)));
EXPECT_EQ(convert_to_set({}), convert_to_set(annotation.get(1)));
EXPECT_EQ(convert_to_set({ "Label1", "Label2" }), convert_to_set(annotation.get(2)));
EXPECT_EQ(convert_to_set({}), convert_to_set(annotation.get(3)));
EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation.get(4)));
}
}
// TEST(ColumnCompressed, MergeLoad) {
// {
// annotate::ColumnCompressed<> annotation(5);
// annotation.set_labels(0, { "Label0", "Label2", "Label8" });
// annotation.set_labels(2, { "Label1", "Label2" });
// annotation.set_labels(4, { "Label8" });
// annotation.serialize(test_dump_basename_vec_good + "_1");
// }
// {
// annotate::ColumnCompressed<> annotation(5);
// annotation.set_labels(1, { "Label0", "Label2", "Label8" });
// annotation.set_labels(2, { "Label1", "Label9", "Label0" });
// annotation.set_labels(3, { "Label8" });
// annotation.serialize(test_dump_basename_vec_good + "_2");
// }
// {
// annotate::ColumnCompressed<> annotation(0);
// ASSERT_TRUE(annotation.merge_load({ test_dump_basename_vec_good + "_1",
// test_dump_basename_vec_good + "_2" }));
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation.get(0)));
// EXPECT_EQ(convert_to_set({ "Label0", "Label2", "Label8" }), convert_to_set(annotation.get(1)));
// EXPECT_EQ(convert_to_set({ "Label1", "Label2", "Label9", "Label0" }), convert_to_set(annotation.get(2)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation.get(3)));
// EXPECT_EQ(convert_to_set({ "Label8" }), convert_to_set(annotation.get(4)));
// }
// }
TEST(BRWTCompressed, has_labels) {
annotate::ColumnCompressed<> init_anno(5);
init_anno.set_labels(0, {"Label0", "Label2", "Label8"});
init_anno.set_labels(2, {"Label1", "Label2"});
init_anno.set_labels(4, {"Label8"});
std::unique_ptr<annotate::MultiLabelAnnotation<uint64_t, std::string>> annotation(
annotate::convert_to_simple_BRWT<BRWTCompressed<>>(std::move(init_anno)).release()
);
EXPECT_FALSE(annotation->has_labels(0, { "Label0", "Label1",
"Label2", "Label4",
"Label5", "Label8" }));
EXPECT_FALSE(annotation->has_labels(0, { "Label0",
"Label2", "Label4",
"Label8" }));
EXPECT_TRUE(annotation->has_labels(0, { "Label0", "Label2", "Label8" }));
EXPECT_TRUE(annotation->has_labels(0, { "Label0", "Label8" }));
EXPECT_TRUE(annotation->has_labels(0, { "Label2" }));
EXPECT_TRUE(annotation->has_labels(0, {}));
EXPECT_FALSE(annotation->has_labels(1, { "Label0", "Label1",
"Label2", "Label4",
"Label5", "Label8" }));
EXPECT_FALSE(annotation->has_labels(1, { "Label0",
"Label2", "Label4",
"Label8" }));
EXPECT_FALSE(annotation->has_labels(1, { "Label0", "Label2", "Label8" }));
EXPECT_FALSE(annotation->has_labels(1, { "Label0", "Label8" }));
EXPECT_FALSE(annotation->has_labels(1, { "Label2" }));
EXPECT_TRUE(annotation->has_labels(1, {}));
EXPECT_FALSE(annotation->has_labels(2, { "Label0", "Label1",
"Label2", "Label4",
"Label5", "Label8" }));
EXPECT_FALSE(annotation->has_labels(2, { "Label0",
"Label2", "Label4",
"Label8" }));
EXPECT_FALSE(annotation->has_labels(2, { "Label1", "Label2", "Label8" }));
EXPECT_FALSE(annotation->has_labels(2, { "Label1", "Label8" }));
EXPECT_TRUE(annotation->has_labels(2, { "Label1", "Label2" }));
EXPECT_TRUE(annotation->has_labels(2, { "Label2" }));
EXPECT_TRUE(annotation->has_labels(2, {}));
}
// TEST(ColumnCompressed, add_label_sequential) {
// size_t graph_half_size = 1000;
// annotate::ColumnCompressed<> annotation(graph_half_size * 2);
// for (size_t i = 0; i < graph_half_size; ++i) {
// annotation.add_label(i, "Label1");
// }
// for (size_t i = graph_half_size; i < 2 * graph_half_size; ++i) {
// annotation.add_label(i, "Label2");
// }
// for (size_t i = 0; i < 2 * graph_half_size; i+= 100) {
// ASSERT_EQ(1u, annotation.get_labels(i).size());
// }
// }
// TEST(ColumnCompressed, add_label_random) {
// size_t graph_half_size = 1000;
// annotate::ColumnCompressed<> annotation(graph_half_size * 2);
// std::vector<std::string> labels { "Label1", "Label2" };
// for (size_t i = 0; i < 2 * graph_half_size; ++i) {
// annotation.add_label(i, labels[i % 2]);
// }
// for (size_t i = 0; i < 2 * graph_half_size; i+= 100) {
// ASSERT_EQ(1u, annotation.get_labels(i).size());
// }
// }
// TEST(ColumnCompressed, add_label_random_with_caching) {
// size_t graph_half_size = 1000;
// annotate::ColumnCompressed<> annotation(graph_half_size * 2, 2);
// std::vector<std::string> labels { "Label1", "Label2" };
// for (size_t i = 0; i < 2 * graph_half_size; ++i) {
// annotation.add_label(i, labels[i % 2]);
// }
// for (size_t i = 0; i < 2 * graph_half_size; i+= 100) {
// ASSERT_EQ(1u, annotation.get_labels(i).size());
// }
// }
TEST(BRWTCompressed, get_top_labels) {
annotate::ColumnCompressed<> init_anno(5);
init_anno.add_labels(0, {"Label0", "Label2", "Label8"});
init_anno.add_labels(2, {"Label1", "Label2"});
init_anno.add_labels(3, {"Label1", "Label2", "Label8"});
init_anno.add_labels(4, {"Label2", "Label8"});
auto annotation_ptr = annotate::convert_to_simple_BRWT<BRWTCompressed<>>(std::move(init_anno));
const auto &annotation = *annotation_ptr;
typedef std::vector<std::pair<std::string, size_t>> VectorCounts;
EXPECT_EQ(VectorCounts({}),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }, 0));
EXPECT_EQ(VectorCounts({}),
annotation.get_top_labels({}));
EXPECT_EQ(VectorCounts({ std::make_pair("Label2", 4),
std::make_pair("Label8", 3),
std::make_pair("Label1", 2),
std::make_pair("Label0", 1) }),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }));
EXPECT_EQ(to_set(VectorCounts({ std::make_pair("Label1", 1),
std::make_pair("Label2", 1) })),
to_set(annotation.get_top_labels({ 2 })));
EXPECT_EQ(VectorCounts({}),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }, 0));
EXPECT_EQ(VectorCounts({ std::make_pair("Label2", 4) }),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }, 1));
EXPECT_EQ(VectorCounts({ std::make_pair("Label2", 4),
std::make_pair("Label8", 3) }),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }, 2));
EXPECT_EQ(VectorCounts({ std::make_pair("Label2", 4),
std::make_pair("Label8", 3),
std::make_pair("Label1", 2) }),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }, 3));
EXPECT_EQ(VectorCounts({ std::make_pair("Label2", 4),
std::make_pair("Label8", 3),
std::make_pair("Label1", 2),
std::make_pair("Label0", 1) }),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }, 4));
EXPECT_EQ(VectorCounts({ std::make_pair("Label2", 4),
std::make_pair("Label8", 3),
std::make_pair("Label1", 2),
std::make_pair("Label0", 1) }),
annotation.get_top_labels({ 0, 1, 2, 3, 4 }, 1000));
}
TEST(BRWTCompressed, get_labels) {
annotate::ColumnCompressed<> init_anno(5);
init_anno.add_labels(0, {"Label0", "Label2", "Label8"});
init_anno.add_labels(2, {"Label1", "Label2"});
init_anno.add_labels(3, {"Label1", "Label2", "Label8"});
init_anno.add_labels(4, {"Label2"});
auto annotation_ptr = annotate::convert_to_simple_BRWT<BRWTCompressed<>>(std::move(init_anno));
const auto &annotation = *annotation_ptr;
EXPECT_EQ(std::vector<std::string>({}),
annotation.get_labels({}, 1));
EXPECT_EQ(convert_to_set({"Label1", "Label2"}),
convert_to_set(annotation.get_labels({ 2 }, 1)));
EXPECT_EQ(convert_to_set({"Label1", "Label2"}),
convert_to_set(annotation.get_labels({ 2 }, 0)));
EXPECT_EQ(convert_to_set({"Label1", "Label2"}),
convert_to_set(annotation.get_labels({ 2 }, 1)));
EXPECT_EQ(convert_to_set({"Label1", "Label2"}),
convert_to_set(annotation.get_labels({ 2 }, 1)));
EXPECT_EQ(convert_to_set({"Label1", "Label2"}),
convert_to_set(annotation.get_labels({ 2 }, 0.5)));
EXPECT_EQ(convert_to_set({"Label2"}),
convert_to_set(annotation.get_labels({ 2, 4 }, 1)));
EXPECT_EQ(convert_to_set({"Label1", "Label2"}),
convert_to_set(annotation.get_labels({ 2, 4 }, 0)));
EXPECT_EQ(convert_to_set({"Label1", "Label2"}),
convert_to_set(annotation.get_labels({ 2, 4 }, 0.5)));
EXPECT_EQ(convert_to_set({"Label2"}),
convert_to_set(annotation.get_labels({ 2, 4 }, 0.501)));
EXPECT_EQ(convert_to_set({"Label2"}),
convert_to_set(annotation.get_labels({ 2, 4 }, 1)));
EXPECT_EQ(convert_to_set({}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 1)));
EXPECT_EQ(convert_to_set({"Label0", "Label1", "Label2", "Label8"}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 0)));
EXPECT_EQ(convert_to_set({"Label0", "Label1", "Label2", "Label8"}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 0.2)));
EXPECT_EQ(convert_to_set({"Label1", "Label2", "Label8"}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 0.201)));
EXPECT_EQ(convert_to_set({"Label1", "Label2", "Label8"}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 0.4)));
EXPECT_EQ(convert_to_set({"Label2"}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 0.401)));
EXPECT_EQ(convert_to_set({"Label2"}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 0.8)));
EXPECT_EQ(convert_to_set({}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 0.801)));
EXPECT_EQ(convert_to_set({}),
convert_to_set(annotation.get_labels({ 0, 1, 2, 3, 4 }, 1)));
}