5 static void dtor(void *ptr
)
7 a_u32
*u
= a_u32_(*, ptr
);
8 printf("%" A_PRI32
"u ", *u
);
11 static void test(void)
14 a_que
*ctx
= a_que_new(sizeof(a_u64
));
15 for (i
= 0; i
!= 10; ++i
)
17 a_u64
*obj
= A_QUE_PUSH_BACK(a_u64
, ctx
);
18 if (obj
) { *obj
= i
; }
21 a_u64
*fore
= A_QUE_FORE_(a_u64
, ctx
);
22 a_u64
*back
= A_QUE_BACK_(a_u64
, ctx
);
23 printf("%" A_PRI64
"u %" A_PRI64
"u ", *fore
, *back
);
26 a_u64
*fore
= A_QUE_FORE(a_u64
, ctx
);
27 a_u64
*back
= A_QUE_BACK(a_u64
, ctx
);
30 printf("%" A_PRI64
"u %" A_PRI64
"u ", *fore
, *back
);
34 a_u64
*fore
= A_QUE_AT(a_u64
, ctx
, 0);
35 a_u64
*back
= A_QUE_AT(a_u64
, ctx
, ~0);
38 printf("%" A_PRI64
"u %" A_PRI64
"u\n", *fore
, *back
);
41 for (i
= 0; i
!= 5; ++i
)
45 a_que_edit(ctx
, sizeof(a_u32
) + 8, A_NULL
);
48 a_u32
*obj
= A_QUE_PUSH_FORE(a_u32
, ctx
);
49 if (obj
) { *obj
= i
; }
51 for (i
= 5; i
!= 10; ++i
)
53 a_u32
*obj
= A_QUE_PUSH_BACK(a_u32
, ctx
);
54 if (obj
) { *obj
= i
; }
57 a_u32
*obj
= A_QUE_INSERT(a_u32
, ctx
, 0);
58 if (obj
) { *obj
= A_U32_MAX
; }
61 a_u32
*obj
= A_QUE_INSERT(a_u32
, ctx
, A_SIZE_MAX
);
62 if (obj
) { *obj
= A_U32_MAX
; }
65 a_que_remove(ctx
, A_SIZE_MAX
);
66 a_que_swap(ctx
, 0, A_SIZE_MAX
);
68 a_u32
*lhs
= A_QUE_FORE_(a_u32
, ctx
);
69 a_u32
*rhs
= A_QUE_BACK_(a_u32
, ctx
);
70 a_que_swap_(lhs
, rhs
);
72 A_QUE_FOREACH(a_u32
*, it
, at
, ctx
)
74 TEST_BUG(a_que_siz(ctx
) >= sizeof(*it
));
75 printf("%" A_PRI32
"u ", *it
);
78 A_QUE_FOREACH_REVERSE(a_u32
*, it
, at
, ctx
)
80 TEST_BUG(a_que_siz(ctx
) >= sizeof(*it
));
81 printf("%" A_PRI32
"u ", *it
);
84 for (i
= 0; i
!= 5; ++i
)
88 for (i
= 0; i
!= 5; ++i
)
98 static int small(void const *lhs
, void const *rhs
)
100 int a
= *a_int_(const *, lhs
);
101 int b
= *a_int_(const *, rhs
);
102 return (a
> b
) - (a
< b
);
105 static int large(void const *lhs
, void const *rhs
)
107 int a
= *a_int_(const *, lhs
);
108 int b
= *a_int_(const *, rhs
);
109 return (a
< b
) - (a
> b
);
112 static int rand10(void)
114 return a_cast_s(int, rand() / a_cast_s(double, RAND_MAX
) * 10); /* NOLINT */
117 static void test_sort(void)
119 unsigned int t
= a_cast_s(unsigned int, time(A_NULL
));
120 a_que
*ctx
= a_que_new(sizeof(int));
125 a_que_drop(ctx
, A_NULL
);
126 for (i
= 0; i
!= 10; ++i
)
128 int *obj
= A_QUE_PUSH_FORE(int, ctx
);
133 a_que_sort_fore(ctx
, small
);
137 A_QUE_FOREACH(int *, it
, at
, ctx
)
139 if (x
>= 0) { TEST_BUG(x
<= *it
); }
147 a_que_drop(ctx
, dtor
);
149 for (i
= 0; i
!= 10; ++i
)
151 int *obj
= A_QUE_PUSH_BACK(int, ctx
);
156 a_que_sort_back(ctx
, large
);
160 A_QUE_FOREACH(int *, it
, at
, ctx
)
162 if (x
>= 0) { TEST_BUG(x
>= *it
); }
170 a_que_drop(ctx
, dtor
);
172 for (i
= 0; i
!= 10; ++i
)
175 int *obj
= A_QUE_PUSH_SORT(int, ctx
, &key
, small
);
183 A_QUE_FOREACH(int *, it
, at
, ctx
)
185 if (x
>= 0) { TEST_BUG(x
<= *it
); }
191 a_que_die(ctx
, dtor
);
195 int main(int argc
, char *argv
[]) /* NOLINT(misc-definitions-in-headers) */