1 #include <ccan/tally/tally.c>
2 #include <ccan/tap/tap.h>
7 struct tally
*tally
= tally_new(100);
8 ssize_t min
, max
, median
;
11 max
= (ssize_t
)~(1ULL << (sizeof(max
)*CHAR_BIT
- 1));
12 min
= (ssize_t
)(1ULL << (sizeof(max
)*CHAR_BIT
- 1));
14 plan_tests(100*2 + 100*2 + 100*2);
15 /* Simple median test: should always be around 0. */
16 for (i
= 0; i
< 100; i
++) {
19 median
= tally_approx_median(tally
, &err
);
21 ok1(median
- (ssize_t
)err
<= 0 && median
+ (ssize_t
)err
>= 0);
24 /* Works for big values too... */
25 for (i
= 0; i
< 100; i
++) {
26 tally_add(tally
, max
- i
);
27 tally_add(tally
, min
+ 1 + i
);
28 median
= tally_approx_median(tally
, &err
);
29 /* Error should be < 100th of max - min. */
30 ok1(err
<= max
/ 100 * 2);
31 ok1(median
- (ssize_t
)err
<= 0 && median
+ (ssize_t
)err
>= 0);
35 tally
= tally_new(10);
36 for (i
= 0; i
< 100; i
++) {
38 median
= tally_approx_median(tally
, &err
);
39 ok1(err
<= i
/ 10 + 1);
40 ok1(median
- (ssize_t
)err
<= i
/2
41 && median
+ (ssize_t
)err
>= i
/2);