16
16
*/
17
17
18
18
static void test_irange_basic (void * * state );
19
+ static void test_irange_change_lossiness (void * * state );
19
20
20
21
static void test_irange_list_union_merge (void * * state );
21
22
static void test_irange_list_union_lossy_cov (void * * state );
@@ -33,6 +34,7 @@ main(void)
33
34
const struct CMUnitTest tests [] =
34
35
{
35
36
cmocka_unit_test (test_irange_basic ),
37
+ cmocka_unit_test (test_irange_change_lossiness ),
36
38
cmocka_unit_test (test_irange_list_union_merge ),
37
39
cmocka_unit_test (test_irange_list_union_lossy_cov ),
38
40
cmocka_unit_test (test_irange_list_union_complete_cov ),
@@ -75,10 +77,76 @@ test_irange_basic(void **state)
75
77
assert_true (is_irange_valid (irange ));
76
78
77
79
/* 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 );
80
82
assert_memory_equal (& irange , & linitial_irange (irange_list ), sizeof (IndexRange ));
81
83
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" );
82
150
}
83
151
84
152
0 commit comments