3 #include "testing/testing.h"
13 TEST(array_utils, ReverseStringEmpty)
17 EXPECT_STREQ(
"",
data);
20 TEST(array_utils, ReverseStringSingle)
24 EXPECT_STREQ(
"0",
data);
27 TEST(array_utils, ReverseString4)
31 EXPECT_STREQ(
"3210",
data);
34 TEST(array_utils, ReverseInt4)
36 const int data_cmp[] = {3, 2, 1, 0};
37 int data[] = {0, 1, 2, 3};
43 TEST(array_utils, FindIndexStringEmpty)
45 char data[] =
"", find =
'0';
50 TEST(array_utils, FindIndexStringSingle)
52 char data[] =
"0", find =
'0';
57 TEST(array_utils, FindIndexStringSingleMissing)
59 char data[] =
"1", find =
'0';
64 TEST(array_utils, FindIndexString4)
66 char data[] =
"0123", find =
'3';
71 TEST(array_utils, FindIndexInt4)
73 int data[] = {0, 1, 2, 3}, find = 3;
78 TEST(array_utils, FindIndexInt4_DupeEnd)
80 int data[] = {0, 1, 2, 0}, find = 0;
85 TEST(array_utils, FindIndexInt4_DupeMid)
87 int data[] = {1, 0, 0, 3}, find = 0;
92 TEST(array_utils, FindIndexPointer)
94 const char *
data[4] = {
nullptr};
99 const char *
a =
"a", *
b =
"b", *
c =
"c", *d =
"d";
101 #define STACK_PUSH_AND_CHECK_FORWARD(v, i) \
103 STACK_PUSH(data, v); \
104 EXPECT_EQ(BLI_array_findindex(data, STACK_SIZE(data), &(v)), i); \
108 #define STACK_PUSH_AND_CHECK_BACKWARD(v, i) \
110 STACK_PUSH(data, v); \
111 EXPECT_EQ(BLI_array_rfindindex(data, STACK_SIZE(data), &(v)), i); \
115 #define STACK_PUSH_AND_CHECK_BOTH(v, i) \
117 STACK_PUSH(data, v); \
118 EXPECT_EQ(BLI_array_findindex(data, STACK_SIZE(data), &(v)), i); \
119 EXPECT_EQ(BLI_array_rfindindex(data, STACK_SIZE(data), &(v)), i); \
140 #undef STACK_PUSH_AND_CHECK_FORWARD
141 #undef STACK_PUSH_AND_CHECK_BACKWARD
142 #undef STACK_PUSH_AND_CHECK_BOTH
146 #define BINARY_AND_TEST(data_cmp, data_a, data_b, data_combine, length) \
148 BLI_array_binary_and(data_combine, data_a, data_b, length); \
149 EXPECT_EQ_ARRAY(data_cmp, data_combine, length); \
153 TEST(array_utils, BinaryAndInt4Zero)
155 const int data_cmp[] = {0, 0, 0, 0};
156 int data_a[] = {0, 1, 0, 1}, data_b[] = {1, 0, 1, 0};
161 TEST(array_utils, BinaryAndInt4Mix)
163 const int data_cmp[] = {1, 0, 1, 0};
164 int data_a[] = {1, 1, 1, 1}, data_b[] = {1, 0, 1, 0};
168 #undef BINARY_AND_TEST
171 #define BINARY_OR_TEST(data_cmp, data_a, data_b, data_combine, length) \
173 BLI_array_binary_or(data_combine, data_a, data_b, length); \
174 EXPECT_EQ_ARRAY(data_combine, data_cmp, length); \
178 TEST(array_utils, BinaryOrInt4Alternate)
180 int data_a[] = {0, 1, 0, 1}, data_b[] = {1, 0, 1, 0}, data_cmp[] = {1, 1, 1, 1};
185 TEST(array_utils, BinaryOrInt4Mix)
187 int data_a[] = {1, 1, 0, 0}, data_b[] = {0, 0, 1, 0}, data_cmp[] = {1, 1, 1, 0};
191 #undef BINARY_OR_TEST
194 #define DEDUPLICATE_ORDERED_TEST(data, data_cmp) \
196 const uint data_len_new = BLI_array_deduplicate_ordered(data, ARRAY_SIZE(data)); \
197 EXPECT_EQ(data_len_new, ARRAY_SIZE(data_cmp)); \
198 EXPECT_EQ_ARRAY(data, data_cmp, data_len_new); \
200 const uint data_len_test = BLI_array_deduplicate_ordered(data, data_len_new); \
201 EXPECT_EQ(data_len_test, ARRAY_SIZE(data_cmp)); \
202 EXPECT_EQ_ARRAY(data, data_cmp, data_len_new); \
206 TEST(array_utils, DeduplicateOrdered1)
209 const int data_cmp[] = {0};
213 TEST(array_utils, DeduplicateOrdered2)
216 const int data_cmp[] = {1, 2};
220 TEST(array_utils, DeduplicateOrdered2Same)
223 const int data_cmp[] = {1};
227 TEST(array_utils, DeduplicateOrdered3Same)
229 int data[] = {1, 1, 1};
230 const int data_cmp[] = {1};
234 TEST(array_utils, DeduplicateOrdered3)
236 int data[] = {3, 3, 2, 2, 1, 1};
237 const int data_cmp[] = {3, 2, 1};
241 #undef DEDUPLICATE_ORDERED_TEST
Generic array manipulation API.
#define BLI_array_reverse(arr, arr_len)
#define BLI_array_findindex(arr, arr_len, p)
#define BLI_array_rfindindex(arr, arr_len, p)
#define BINARY_OR_TEST(data_cmp, data_a, data_b, data_combine, length)
#define STACK_PUSH_AND_CHECK_FORWARD(v, i)
#define DEDUPLICATE_ORDERED_TEST(data, data_cmp)
#define STACK_PUSH_AND_CHECK_BOTH(v, i)
#define STACK_PUSH_AND_CHECK_BACKWARD(v, i)
#define BINARY_AND_TEST(data_cmp, data_a, data_b, data_combine, length)
TEST(array_utils, ReverseStringEmpty)
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define STACK_DECLARE(stack)
#define STACK_INIT(stack, stack_num)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)