Skip to content

Commit ae86737

Browse files
update test
1 parent fc0fa6a commit ae86737

File tree

1 file changed

+34
-22
lines changed

1 file changed

+34
-22
lines changed

tests/z_int_callback_drop.c

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,37 @@
2222
#include <assert.h>
2323
z_owned_mutex_t mu;
2424

25+
typedef struct z_val_t {
26+
int val;
27+
bool dropped;
28+
} z_val_t;
29+
30+
void drop(void *arg) {
31+
z_mutex_lock(z_loan_mut(mu));
32+
z_val_t *val = (z_val_t *)arg;
33+
val->dropped = true;
34+
z_mutex_unlock(z_loan_mut(mu));
35+
}
36+
2537
void data_handler(z_loaned_sample_t *sample, void *arg) {
26-
int *val = (int *)arg;
38+
z_val_t *val = (z_val_t *)arg;
2739
z_mutex_lock(z_loan_mut(mu));
28-
(*val)++;
40+
(val->val)++;
2941
z_mutex_unlock(z_loan_mut(mu));
3042
z_sleep_s(5);
3143
z_mutex_lock(z_loan_mut(mu));
32-
(*val)++;
44+
(val->val)++;
3345
z_mutex_unlock(z_loan_mut(mu));
3446
}
3547

3648
void query_handler(z_loaned_query_t *query, void *arg) {
37-
int *val = (int *)arg;
49+
z_val_t *val = (z_val_t *)arg;
3850
z_mutex_lock(z_loan_mut(mu));
39-
(*val)++;
51+
(val->val)++;
4052
z_mutex_unlock(z_loan_mut(mu));
4153
z_sleep_s(5);
4254
z_mutex_lock(z_loan_mut(mu));
43-
(*val)++;
55+
(val->val)++;
4456
z_mutex_unlock(z_loan_mut(mu));
4557

4658
z_view_keyexpr_t ke;
@@ -51,13 +63,13 @@ void query_handler(z_loaned_query_t *query, void *arg) {
5163
}
5264

5365
void reply_handler(z_loaned_reply_t *reply, void *arg) {
54-
int *val = (int *)arg;
66+
z_val_t *val = (z_val_t *)arg;
5567
z_mutex_lock(z_loan_mut(mu));
56-
(*val)++;
68+
(val->val)++;
5769
z_mutex_unlock(z_loan_mut(mu));
5870
z_sleep_s(5);
5971
z_mutex_lock(z_loan_mut(mu));
60-
(*val)++;
72+
(val->val)++;
6173
z_mutex_unlock(z_loan_mut(mu));
6274
}
6375

@@ -74,10 +86,10 @@ void test_pub_sub() {
7486
assert(z_open(&s1, z_move(c1), NULL) == Z_OK);
7587
assert(z_open(&s2, z_move(c2), NULL) == Z_OK);
7688

77-
int val = 0;
89+
z_val_t val = {0, false};
7890
z_owned_subscriber_t sub;
7991
z_owned_closure_sample_t callback;
80-
z_closure(&callback, data_handler, NULL, (void *)&val);
92+
z_closure(&callback, data_handler, drop, (void *)&val);
8193
assert(z_declare_subscriber(z_loan(s1), &sub, z_loan(ke), z_move(callback), NULL) == Z_OK);
8294
z_sleep_s(1);
8395
z_owned_bytes_t p;
@@ -86,11 +98,10 @@ void test_pub_sub() {
8698

8799
z_sleep_s(1);
88100
z_drop(z_move(sub));
89-
int out = 0;
90101
z_mutex_lock(z_loan_mut(mu));
91-
out = val;
102+
assert(val.dropped);
103+
assert(val.val == 2);
92104
z_mutex_unlock(z_loan_mut(mu));
93-
assert(out == 2);
94105

95106
z_drop(z_move(s1));
96107
z_drop(z_move(s2));
@@ -110,32 +121,33 @@ void test_query_reply() {
110121
assert(z_open(&s1, z_move(c1), NULL) == Z_OK);
111122
assert(z_open(&s2, z_move(c2), NULL) == Z_OK);
112123

113-
int val = 0;
124+
z_val_t query_val = {0, false};
125+
z_val_t reply_val = {0, false};
126+
114127
z_owned_queryable_t q;
115128
z_owned_closure_query_t q_callback;
116-
z_closure(&q_callback, query_handler, NULL, (void *)&val);
129+
z_closure(&q_callback, query_handler, drop, (void *)&query_val);
117130

118131
assert(z_declare_queryable(z_loan(s1), &q, z_loan(ke), z_move(q_callback), NULL) == Z_OK);
119132
z_sleep_s(1);
120133

121134
z_owned_closure_reply_t r_callback;
122-
z_closure(&r_callback, reply_handler, NULL, (void *)&val);
135+
z_closure(&r_callback, reply_handler, drop, (void *)&reply_val);
123136
assert(z_get(z_loan(s2), z_loan(ke), "", z_move(r_callback), NULL) == Z_OK);
124137

125138
z_sleep_s(1);
126139
z_drop(z_move(q));
127-
int out = 0;
128140
z_mutex_lock(z_loan_mut(mu));
129-
out = val;
141+
assert(query_val.dropped);
142+
assert(query_val.val == 2);
130143
z_mutex_unlock(z_loan_mut(mu));
131-
assert(out == 2);
132144

133145
z_sleep_s(1);
134146
z_drop(z_move(s2));
135147
z_mutex_lock(z_loan_mut(mu));
136-
out = val;
148+
assert(reply_val.dropped);
149+
assert(reply_val.val == 2);
137150
z_mutex_unlock(z_loan_mut(mu));
138-
assert(out == 4);
139151

140152
z_drop(z_move(s1));
141153
z_drop(z_move(mu));

0 commit comments

Comments
 (0)