Skip to content

Commit 07bf75f

Browse files
committed
add more tests for rangeset.c, remove 'rangeset_tests' from repo
1 parent f552d2b commit 07bf75f

File tree

3 files changed

+96
-2
lines changed

3 files changed

+96
-2
lines changed

tests/cmocka/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rangeset_tests

tests/cmocka/rangeset_tests

-185 KB
Binary file not shown.

tests/cmocka/rangeset_tests.c

Lines changed: 95 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
static void test_irange_list_union_merge(void **state);
1919
static void test_irange_list_union_lossy_cov(void **state);
2020
static void test_irange_list_union_complete_cov(void **state);
21+
static void test_irange_list_union_intersection(void **state);
2122

2223

2324
/* Entrypoint */
@@ -30,6 +31,7 @@ main(void)
3031
cmocka_unit_test(test_irange_list_union_merge),
3132
cmocka_unit_test(test_irange_list_union_lossy_cov),
3233
cmocka_unit_test(test_irange_list_union_complete_cov),
34+
cmocka_unit_test(test_irange_list_union_intersection),
3335
};
3436

3537
/* Run series of tests */
@@ -46,14 +48,13 @@ main(void)
4648
static void
4749
test_irange_list_union_merge(void **state)
4850
{
49-
IndexRange a;
51+
IndexRange a, b;
5052
List *unmerged,
5153
*union_result;
5254

5355

5456
/* Subtest #0 */
5557
a = make_irange(0, 8, IR_COMPLETE);
56-
5758
unmerged = NIL;
5859
unmerged = lappend_irange(unmerged, make_irange(9, 10, IR_COMPLETE));
5960
unmerged = lappend_irange(unmerged, make_irange(11, 11, IR_LOSSY));
@@ -66,6 +67,31 @@ test_irange_list_union_merge(void **state)
6667

6768
assert_string_equal(rangeset_print(union_result),
6869
"[0-10]C, 11L, [12-24]C");
70+
71+
union_result = irange_list_union(unmerged, unmerged);
72+
73+
assert_string_equal(rangeset_print(union_result),
74+
"[9-10]C, 11L, [12-24]C");
75+
76+
77+
/* Subtest #1 */
78+
a = make_irange(0, 10, IR_COMPLETE);
79+
b = make_irange(12, 20, IR_COMPLETE);
80+
union_result = irange_list_union(list_make1_irange(a),
81+
list_make1_irange(b));
82+
83+
assert_string_equal(rangeset_print(union_result),
84+
"[0-10]C, [12-20]C");
85+
86+
/* Subtest #2 */
87+
a = make_irange(0, 10, IR_LOSSY);
88+
b = make_irange(11, 20, IR_LOSSY);
89+
union_result = irange_list_union(list_make1_irange(a),
90+
list_make1_irange(b));
91+
92+
assert_string_equal(rangeset_print(union_result),
93+
"[0-20]L");
94+
6995
}
7096

7197
/* Lossy IndexRange covers complete IndexRange */
@@ -184,3 +210,70 @@ test_irange_list_union_complete_cov(void **state)
184210
assert_string_equal(rangeset_print(union_result),
185211
"[0-100]C");
186212
}
213+
214+
static void
215+
test_irange_list_union_intersection(void **state)
216+
{
217+
IndexRange a, b;
218+
List *unmerged,
219+
*union_result;
220+
221+
222+
/* Subtest #0 */
223+
a = make_irange(0, 55, IR_COMPLETE);
224+
b = make_irange(55, 100, IR_COMPLETE);
225+
union_result = irange_list_union(list_make1_irange(a),
226+
list_make1_irange(b));
227+
228+
assert_string_equal(rangeset_print(union_result),
229+
"[0-100]C");
230+
231+
/* Subtest #1 */
232+
a = make_irange(0, 55, IR_COMPLETE);
233+
b = make_irange(55, 100, IR_LOSSY);
234+
union_result = irange_list_union(list_make1_irange(a),
235+
list_make1_irange(b));
236+
237+
assert_string_equal(rangeset_print(union_result),
238+
"[0-55]C, [56-100]L");
239+
240+
/* Subtest #2 */
241+
unmerged = NIL;
242+
unmerged = lappend_irange(unmerged, make_irange(0, 45, IR_LOSSY));
243+
unmerged = lappend_irange(unmerged, make_irange(100, 100, IR_LOSSY));
244+
b = make_irange(40, 65, IR_COMPLETE);
245+
union_result = irange_list_union(unmerged, list_make1_irange(b));
246+
247+
assert_string_equal(rangeset_print(union_result),
248+
"[0-39]L, [40-65]C, 100L");
249+
250+
/* Subtest #3 */
251+
unmerged = NIL;
252+
unmerged = lappend_irange(unmerged, make_irange(0, 45, IR_LOSSY));
253+
unmerged = lappend_irange(unmerged, make_irange(64, 100, IR_LOSSY));
254+
b = make_irange(40, 65, IR_COMPLETE);
255+
union_result = irange_list_union(unmerged, list_make1_irange(b));
256+
257+
assert_string_equal(rangeset_print(union_result),
258+
"[0-39]L, [40-65]C, [66-100]L");
259+
260+
/* Subtest #4 */
261+
unmerged = NIL;
262+
unmerged = lappend_irange(unmerged, make_irange(0, 45, IR_COMPLETE));
263+
unmerged = lappend_irange(unmerged, make_irange(64, 100, IR_COMPLETE));
264+
b = make_irange(40, 65, IR_COMPLETE);
265+
union_result = irange_list_union(unmerged, list_make1_irange(b));
266+
267+
assert_string_equal(rangeset_print(union_result),
268+
"[0-100]C");
269+
270+
/* Subtest #5 */
271+
unmerged = NIL;
272+
unmerged = lappend_irange(unmerged, make_irange(0, 45, IR_COMPLETE));
273+
unmerged = lappend_irange(unmerged, make_irange(64, 100, IR_COMPLETE));
274+
b = make_irange(40, 65, IR_LOSSY);
275+
union_result = irange_list_union(unmerged, list_make1_irange(b));
276+
277+
assert_string_equal(rangeset_print(union_result),
278+
"[0-45]C, [46-63]L, [64-100]C");
279+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy