Skip to content

Commit 2bc4ada

Browse files
committed
add new test (test_irange_change_lossiness)
1 parent 0ea9467 commit 2bc4ada

File tree

1 file changed

+70
-2
lines changed

1 file changed

+70
-2
lines changed

tests/cmocka/rangeset_tests.c

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717

1818
static void test_irange_basic(void **state);
19+
static void test_irange_change_lossiness(void **state);
1920

2021
static void test_irange_list_union_merge(void **state);
2122
static void test_irange_list_union_lossy_cov(void **state);
@@ -33,6 +34,7 @@ main(void)
3334
const struct CMUnitTest tests[] =
3435
{
3536
cmocka_unit_test(test_irange_basic),
37+
cmocka_unit_test(test_irange_change_lossiness),
3638
cmocka_unit_test(test_irange_list_union_merge),
3739
cmocka_unit_test(test_irange_list_union_lossy_cov),
3840
cmocka_unit_test(test_irange_list_union_complete_cov),
@@ -75,10 +77,76 @@ test_irange_basic(void **state)
7577
assert_true(is_irange_valid(irange));
7678

7779
/* test allocation */
78-
irange_list = NIL;
79-
irange_list = lappend_irange(irange_list, irange);
80+
irange = make_irange(100, 200, IR_LOSSY);
81+
irange_list = lappend_irange(NIL, irange);
8082
assert_memory_equal(&irange, &linitial_irange(irange_list), sizeof(IndexRange));
8183
assert_memory_equal(&irange, &llast_irange(irange_list), sizeof(IndexRange));
84+
85+
/* test length */
86+
irange_list = NIL;
87+
assert_int_equal(irange_list_length(irange_list), 0);
88+
irange_list = lappend_irange(irange_list, make_irange(10, 20, IR_LOSSY));
89+
assert_int_equal(irange_list_length(irange_list), 11);
90+
irange_list = lappend_irange(irange_list, make_irange(21, 30, IR_LOSSY));
91+
assert_int_equal(irange_list_length(irange_list), 21);
92+
}
93+
94+
95+
/* Test lossiness switcher */
96+
static void
97+
test_irange_change_lossiness(void **state)
98+
{
99+
List *irange_list;
100+
101+
/* test lossiness change (NIL) */
102+
irange_list = irange_list_set_lossiness(NIL, IR_LOSSY);
103+
assert_ptr_equal(irange_list, NIL);
104+
irange_list = irange_list_set_lossiness(NIL, IR_COMPLETE);
105+
assert_ptr_equal(irange_list, NIL);
106+
107+
/* test lossiness change (no-op) #1 */
108+
irange_list = list_make1_irange(make_irange(10, 20, IR_LOSSY));
109+
irange_list = irange_list_set_lossiness(irange_list, IR_LOSSY);
110+
assert_string_equal(rangeset_print(irange_list), "[10-20]L");
111+
112+
/* test lossiness change (no-op) #2 */
113+
irange_list = list_make1_irange(make_irange(30, 40, IR_COMPLETE));
114+
irange_list = irange_list_set_lossiness(irange_list, IR_COMPLETE);
115+
assert_string_equal(rangeset_print(irange_list), "[30-40]C");
116+
117+
/* test lossiness change (single element) #1 */
118+
irange_list = list_make1_irange(make_irange(10, 20, IR_LOSSY));
119+
irange_list = irange_list_set_lossiness(irange_list, IR_COMPLETE);
120+
assert_string_equal(rangeset_print(irange_list), "[10-20]C");
121+
122+
/* test lossiness change (single element) #2 */
123+
irange_list = list_make1_irange(make_irange(30, 40, IR_COMPLETE));
124+
irange_list = irange_list_set_lossiness(irange_list, IR_LOSSY);
125+
assert_string_equal(rangeset_print(irange_list), "[30-40]L");
126+
127+
/* test lossiness change (multiple elements, adjacent) #1 */
128+
irange_list = list_make1_irange(make_irange(10, 20, IR_LOSSY));
129+
irange_list = lappend_irange(irange_list, make_irange(21, 40, IR_COMPLETE));
130+
irange_list = irange_list_set_lossiness(irange_list, IR_COMPLETE);
131+
assert_string_equal(rangeset_print(irange_list), "[10-40]C");
132+
133+
/* test lossiness change (multiple elements, adjacent) #2 */
134+
irange_list = list_make1_irange(make_irange(10, 20, IR_COMPLETE));
135+
irange_list = lappend_irange(irange_list, make_irange(21, 40, IR_LOSSY));
136+
irange_list = irange_list_set_lossiness(irange_list, IR_LOSSY);
137+
assert_string_equal(rangeset_print(irange_list), "[10-40]L");
138+
139+
/* test lossiness change (multiple elements, non-adjacent) #1 */
140+
irange_list = list_make1_irange(make_irange(10, 15, IR_COMPLETE));
141+
irange_list = lappend_irange(irange_list, make_irange(21, 40, IR_LOSSY));
142+
irange_list = irange_list_set_lossiness(irange_list, IR_COMPLETE);
143+
assert_string_equal(rangeset_print(irange_list), "[10-15]C, [21-40]C");
144+
145+
/* test lossiness change (multiple elements, non-adjacent) #2 */
146+
irange_list = list_make1_irange(make_irange(10, 15, IR_LOSSY));
147+
irange_list = lappend_irange(irange_list, make_irange(21, 40, IR_COMPLETE));
148+
irange_list = irange_list_set_lossiness(irange_list, IR_LOSSY);
149+
assert_string_equal(rangeset_print(irange_list), "[10-15]L, [21-40]L");
82150
}
83151

84152

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