Mercurial > irccd
annotate tests/test-jsapi-timer.c @ 1195:43e3f7a4045b release-4.0 4.0.4
misc: update before 4.0.4
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 03 Aug 2023 21:24:10 +0200 |
parents | f06e9761cc90 |
children | 1845a0509a93 |
rev | line source |
---|---|
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * test-jsapi-timer.c -- test Irccd.System API |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
1136
f06e9761cc90
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
1135
diff
changeset
|
4 * Copyright (c) 2013-2022 David Demelier <markand@malikania.fr> |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
19 #include <poll.h> |
1132
6f85c4743494
tests: fix broken tests because of SIGUSR1
David Demelier <markand@malikania.fr>
parents:
1076
diff
changeset
|
20 #include <signal.h> |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #define GREATEST_USE_ABBREVS 0 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <greatest.h> |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
25 #include <irccd/irccd.h> |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 #include <irccd/js-plugin.h> |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 #include <irccd/plugin.h> |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 static struct irc_plugin *plugin; |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
30 static duk_context *ctx; |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 static void |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 setup(void *udata) |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 { |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 (void)udata; |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
37 plugin = js_plugin_open("timer", TOP "/tests/data/timer.js"); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
38 ctx = js_plugin_get_context(plugin); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 } |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 static void |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 teardown(void *udata) |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 { |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 (void)udata; |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 irc_plugin_finish(plugin); |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 plugin = NULL; |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
49 ctx = NULL; |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 } |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 static void |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 set_type(const char *name) |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 { |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
55 duk_get_global_string(ctx, "Irccd"); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
56 duk_get_prop_string(ctx, -1, "Timer"); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
57 duk_get_prop_string(ctx, -1, name); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
58 duk_put_global_string(ctx, "type"); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
59 duk_pop_n(ctx, 2); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
61 irc_plugin_load(plugin); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 } |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
64 GREATEST_TEST |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
65 basics_single(void) |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 { |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
67 time_t start = time(NULL); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
68 struct pollfd fd; |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 set_type("Single"); |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
72 while (difftime(time(NULL), start) < 3) { |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
73 irc_bot_prepare(&fd); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
74 poll(&fd, 1, 1); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
75 irc_bot_flush(&fd); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 } |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
78 GREATEST_ASSERT(duk_get_global_string(ctx, "count")); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
79 GREATEST_ASSERT_EQ(duk_get_int(ctx, -1), 1); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
80 GREATEST_PASS(); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 } |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
83 GREATEST_TEST |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
84 basics_repeat(void) |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 { |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
86 time_t start = time(NULL); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
87 struct pollfd fd; |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 set_type("Repeat"); |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
91 while (difftime(time(NULL), start) < 3) { |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
92 irc_bot_prepare(&fd); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
93 poll(&fd, 1, 1); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
94 irc_bot_flush(&fd); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 } |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
97 GREATEST_ASSERT(duk_get_global_string(ctx, "count")); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
98 GREATEST_ASSERT(duk_get_int(ctx, -1) >= 5); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
99 GREATEST_PASS(); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
100 } |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
101 |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
102 GREATEST_SUITE(suite_basics) |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
103 { |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
104 GREATEST_SET_SETUP_CB(setup, NULL); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
105 GREATEST_SET_TEARDOWN_CB(teardown, NULL); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
106 GREATEST_RUN_TEST(basics_single); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
107 GREATEST_RUN_TEST(basics_repeat); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 } |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
110 GREATEST_MAIN_DEFS(); |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 |
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 int |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
113 main(int argc, char **argv) |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 { |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
115 irc_bot_init(); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
116 |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
117 GREATEST_MAIN_BEGIN(); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
118 GREATEST_RUN_SUITE(suite_basics); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
119 GREATEST_MAIN_END(); |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
120 |
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
963
diff
changeset
|
121 return 0; |
963
371e1cc2c697
tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 } |