1540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati#include <gtest/gtest.h>
2540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
3f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He#include <base/logging.h>
4f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He
5ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach Johnson#include "AllocationTestHarness.h"
6ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach Johnson
7c196f214c5ae349ec2022f8d3cbaf56910b3b9f8Pavlin Radoslavov#include "osi/include/list.h"
8c196f214c5ae349ec2022f8d3cbaf56910b3b9f8Pavlin Radoslavov#include "osi/include/osi.h"
9540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
10ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach Johnsonclass ListTest : public AllocationTestHarness {};
11540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
12ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_new_free_simple) {
13b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
14ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach Johnson  ASSERT_TRUE(list != NULL);
15540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
16540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
17540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
18ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_free_null) {
19540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  // In this test we just verify that list_free is callable with NULL.
20540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(NULL);
21540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
22540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
23ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_empty_list_is_empty) {
24b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
25540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_TRUE(list_is_empty(list));
26540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
27540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
28540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
29ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_empty_list_has_no_length) {
30b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
31540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_EQ(list_length(list), 0U);
32540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
33540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
34540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
35ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_simple_list_prepend) {
36b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
37540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_TRUE(list_prepend(list, &list));
38540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_FALSE(list_is_empty(list));
39540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_EQ(list_length(list), 1U);
40540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
41540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
42540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
43ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_simple_list_append) {
44b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
45540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_TRUE(list_append(list, &list));
46540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_FALSE(list_is_empty(list));
47540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_EQ(list_length(list), 1U);
48540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
49540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
50540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
51ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_remove_found) {
52b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
53540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_append(list, &list);
54540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_TRUE(list_remove(list, &list));
55540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_TRUE(list_is_empty(list));
56b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  EXPECT_EQ(list_length(list), 0U);
57540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
58540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
59540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
60ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_remove_not_found) {
61540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  int x;
62b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
63540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_append(list, &list);
64540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_FALSE(list_remove(list, &x));
65540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_FALSE(list_is_empty(list));
66540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_EQ(list_length(list), 1U);
67540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
68540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
69540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
70ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_front) {
71b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int x[] = {1, 2, 3, 4, 5};
72b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
73540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
74b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (size_t i = 0; i < ARRAY_SIZE(x); ++i) list_append(list, &x[i]);
75540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
76540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_EQ(list_front(list), &x[0]);
77540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
78540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
79540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
80540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
81ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_back) {
82b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int x[] = {1, 2, 3, 4, 5};
83b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
84540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
85b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (size_t i = 0; i < ARRAY_SIZE(x); ++i) list_append(list, &x[i]);
86540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
87540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_EQ(list_back(list), &x[ARRAY_SIZE(x) - 1]);
88540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
89540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
90540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
91540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
92ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_clear) {
93b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int x[] = {1, 2, 3, 4, 5};
94b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
95540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
96b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (size_t i = 0; i < ARRAY_SIZE(x); ++i) list_append(list, &x[i]);
97540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
98540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_clear(list);
99540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_TRUE(list_is_empty(list));
100540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  EXPECT_EQ(list_length(list), 0U);
101540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
102540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
103540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
104540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
105ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_append_multiple) {
106b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int x[] = {1, 2, 3, 4, 5};
107b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
108540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
109b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (size_t i = 0; i < ARRAY_SIZE(x); ++i) list_append(list, &x[i]);
110540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
111540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  int i = 0;
112b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (const list_node_t *node = list_begin(list); node != list_end(list);
113b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson       node = list_next(node), ++i)
114540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati    EXPECT_EQ(list_node(node), &x[i]);
115540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
116540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
117540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
118540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
119ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_prepend_multiple) {
120b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int x[] = {1, 2, 3, 4, 5};
121b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
122540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
123b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (size_t i = 0; i < ARRAY_SIZE(x); ++i) list_prepend(list, &x[i]);
124540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
125540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  int i = ARRAY_SIZE(x) - 1;
126b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (const list_node_t *node = list_begin(list); node != list_end(list);
127b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson       node = list_next(node), --i)
128540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati    EXPECT_EQ(list_node(node), &x[i]);
129540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati
130540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati  list_free(list);
131540e7cab4a9a47dc2d38f96e332e19d16dbfc1d2Sharvil Nanavati}
132bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati
133ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_begin_empty_list) {
134b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
135bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati  EXPECT_EQ(list_begin(list), list_end(list));
136bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati  list_free(list);
137bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati}
138bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati
139ee2aa45def216a3c4d6a23481fa96f1b02a5de8cZach JohnsonTEST_F(ListTest, test_list_next) {
140b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
141bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati  list_append(list, &list);
142bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati  EXPECT_NE(list_begin(list), list_end(list));
143bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati  EXPECT_EQ(list_next(list_begin(list)), list_end(list));
144bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati  list_free(list);
145bfaea44aa24ad3d8b7aac98204ce8ee5c12857b5Sharvil Nanavati}
146760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
147b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watsonstatic bool list_callback_sum(void* data, void* context) {
148f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He  CHECK(data);
149f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He  CHECK(context);
150b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int* sum = (int*)context;
151b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int* value = (int*)data;
152760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  *sum += *value;
153760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  return true;
154760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach}
155760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
156b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watsonstatic bool list_callback_find_int(void* data, void* context) {
157f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He  CHECK(data);
158f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He  CHECK(context);
159b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  return (*(int*)data != *(int*)context);
160760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach}
161760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
162760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre EisenbachTEST_F(ListTest, test_list_foreach_full) {
163b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
164760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
165760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  // Fill in test data
166b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int x[] = {1, 2, 3, 4, 5};
167b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (size_t i = 0; i < ARRAY_SIZE(x); ++i) list_append(list, &x[i]);
1684394720415f45db5caea73e1a05351ff98601fe0Pavlin Radoslavov  EXPECT_EQ(list_length(list), (size_t)5);
169760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
170760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  // Test complete iteration
171760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  int sum = 0;
172b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_node_t* rc = list_foreach(list, list_callback_sum, &sum);
173760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  EXPECT_EQ(sum, 15);
17467f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(rc == NULL);
175760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
176760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  list_free(list);
177760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach}
178760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
179760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre EisenbachTEST_F(ListTest, test_list_foreach_partial) {
180b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_t* list = list_new(NULL);
181760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
182760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  // Fill in test data
183b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int x[] = {1, 2, 3, 4, 5};
184b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  for (size_t i = 0; i < ARRAY_SIZE(x); ++i) list_append(list, &x[i]);
1854394720415f45db5caea73e1a05351ff98601fe0Pavlin Radoslavov  EXPECT_EQ(list_length(list), (size_t)5);
186760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
187760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  // Test partial iteration
188760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  int find = 4;
189b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  list_node_t* rc = list_foreach(list, list_callback_find_int, &find);
19067f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(rc != NULL);
191b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  int* rc_val = (int*)list_node(rc);
19267f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(*rc_val == 4);
193760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
194760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  find = 1;
195760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  rc = list_foreach(list, list_callback_find_int, &find);
19667f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(rc != NULL);
197b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  rc_val = (int*)list_node(rc);
19867f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(*rc_val == 1);
199760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
200760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  find = 5;
201760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  rc = list_foreach(list, list_callback_find_int, &find);
20267f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(rc != NULL);
203b55040cc6448a8847490da807d2b6362aa8cb8d9Myles Watson  rc_val = (int*)list_node(rc);
20467f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(*rc_val == 5);
205760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
206760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  find = 0;
207760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  rc = list_foreach(list, list_callback_find_int, &find);
20867f57c639e6dc2f302115017eb92c40dd306c15dJakub Pawlowski  EXPECT_TRUE(rc == NULL);
209760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach
210760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach  list_free(list);
211760fb7083b1781c9519fb6a36e46d7ab5d5efb30Andre Eisenbach}
212