1 /* Apache License, Version 2.0 */
3 #include "testing/testing.h"
8 #include "BLI_utildefines.h"
18 stack = BLI_stack_new(sizeof(int), __func__);
19 EXPECT_EQ(BLI_stack_is_empty(stack), true);
20 EXPECT_EQ(BLI_stack_count(stack), 0);
21 BLI_stack_free(stack);
27 unsigned int in = -1, out = 1;
29 stack = BLI_stack_new(sizeof(in), __func__);
31 BLI_stack_push(stack, (void *)&in);
32 EXPECT_EQ(BLI_stack_is_empty(stack), false);
33 EXPECT_EQ(BLI_stack_count(stack), 1);
34 BLI_stack_pop(stack, (void *)&out);
36 EXPECT_EQ(BLI_stack_is_empty(stack), true);
37 EXPECT_EQ(BLI_stack_count(stack), 0);
38 BLI_stack_free(stack);
47 stack = BLI_stack_new(sizeof(in), __func__);
49 for (in = 0; in < tot; in++) {
50 BLI_stack_push(stack, (void *)&in);
53 for (in = tot - 1; in >= 0; in--) {
54 EXPECT_EQ(BLI_stack_is_empty(stack), false);
55 BLI_stack_pop(stack, (void *)&out);
59 EXPECT_EQ(BLI_stack_is_empty(stack), true);
61 BLI_stack_free(stack);
70 char in[] = "hello world!";
73 stack = BLI_stack_new(sizeof(in), __func__);
75 for (i = 0; i < tot; i++) {
77 BLI_stack_push(stack, (void *)in);
80 for (i = tot - 1; i >= 0; i--) {
81 EXPECT_EQ(BLI_stack_is_empty(stack), false);
83 BLI_stack_pop(stack, (void *)&out);
84 EXPECT_STREQ(in, out);
86 EXPECT_EQ(BLI_stack_is_empty(stack), true);
88 BLI_stack_free(stack);
93 const int sizes[] = {3, 11, 81, 400, 999, 12, 1, 9721, 7, 99, 5, 0};
94 int sizes_test[ARRAY_SIZE(sizes)];
101 stack = BLI_stack_new(sizeof(in), __func__);
103 /* add a bunch of numbers, ensure we get same sum out */
105 for (s = sizes; *s; s++) {
106 for (i = *s; i != 0; i--) {
107 BLI_stack_push(stack, (void *)&i);
112 while (!BLI_stack_is_empty(stack)) {
113 BLI_stack_pop(stack, (void *)&out);
116 EXPECT_EQ(sum, sum_test);
118 /* add and remove all except last */
119 for (s = sizes; *s; s++) {
120 for (i = *s; i >= 0; i--) {
121 BLI_stack_push(stack, (void *)&i);
123 for (i = *s; i > 0; i--) {
124 BLI_stack_pop(stack, (void *)&out);
128 i = ARRAY_SIZE(sizes) - 1;
129 while (!BLI_stack_is_empty(stack)) {
131 BLI_stack_pop(stack, (void *)&sizes_test[i]);
132 EXPECT_EQ(sizes[i], sizes_test[i]);
136 EXPECT_EQ(memcmp(sizes, sizes_test, sizeof(sizes) - sizeof(int)), 0);
139 /* finally test BLI_stack_pop_n */
140 for (i = ARRAY_SIZE(sizes); i--; ) {
141 BLI_stack_push(stack, (void *)&sizes[i]);
143 EXPECT_EQ(BLI_stack_count(stack), ARRAY_SIZE(sizes));
144 BLI_stack_pop_n(stack, (void *)sizes_test, ARRAY_SIZE(sizes));
145 EXPECT_EQ(memcmp(sizes, sizes_test, sizeof(sizes) - sizeof(int)), 0);
147 BLI_stack_free(stack);