comparison tests/test-util.c @ 287:75d2fdf96064

util: nrand no longer contains upper range
author David Demelier <markand@malikania.fr>
date Mon, 04 Jan 2021 11:34:18 +0100
parents
children d01e83210ca2
comparison
equal deleted inserted replaced
286:3991779aaba9 287:75d2fdf96064
1 /*
2 * test-util.c -- test utilities
3 *
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
5 *
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19 #include <stdbool.h>
20
21 #define GREATEST_USE_ABBREVS 0
22 #include <greatest.h>
23
24 #include <core/util.h>
25
26 GREATEST_TEST
27 nrand_simple(void)
28 {
29 bool found[10] = {false};
30
31 /* Only try from [2..5], util_nrand does not include upper range. */
32 for (int i = 0; i < 100000; ++i)
33 found[util_nrand(2, 6)] = true;
34
35 GREATEST_ASSERT_EQ(false, found[0]);
36 GREATEST_ASSERT_EQ(false, found[1]);
37 GREATEST_ASSERT_EQ(true, found[2]);
38 GREATEST_ASSERT_EQ(true, found[3]);
39 GREATEST_ASSERT_EQ(true, found[4]);
40 GREATEST_ASSERT_EQ(true, found[5]);
41 GREATEST_ASSERT_EQ(false, found[7]);
42 GREATEST_ASSERT_EQ(false, found[8]);
43 GREATEST_ASSERT_EQ(false, found[9]);
44
45 GREATEST_PASS();
46 }
47
48 GREATEST_SUITE(suite_nrand)
49 {
50 GREATEST_RUN_TEST(nrand_simple);
51 }
52
53 GREATEST_MAIN_DEFS();
54
55 int
56 main(int argc, char **argv)
57 {
58 GREATEST_MAIN_BEGIN();
59 GREATEST_RUN_SUITE(suite_nrand);
60 GREATEST_MAIN_END();
61
62 return 0;
63 }