Mercurial > irccd
annotate tests/src/libirccd-js/jsapi-util/main.cpp @ 611:9fbd1700435b
Tests: reoganize hierarchy
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 15 Dec 2017 15:37:58 +0100 |
parents | tests/src/util-jsapi/main.cpp@9d4da384f5d6 |
children | 27587ff92a64 |
rev | line source |
---|---|
0 | 1 /* |
2 * main.cpp -- test Irccd.Util API | |
3 * | |
394 | 4 * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr> |
0 | 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 | |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
19 #define BOOST_TEST_MODULE "Unicode Javascript API" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
20 #include <boost/test/unit_test.hpp> |
0 | 21 |
529
b3a0f61a35fe
Irccdctl: rename module to jsapi, closes #727
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
22 #include <irccd/js/util_jsapi.hpp> |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
23 |
604
9d4da384f5d6
Tests: move libirccd-test to test/ folder, closes #750
David Demelier <markand@malikania.fr>
parents:
581
diff
changeset
|
24 #include <irccd/test/js_test.hpp> |
0 | 25 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
26 namespace irccd { |
0 | 27 |
529
b3a0f61a35fe
Irccdctl: rename module to jsapi, closes #727
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
28 BOOST_FIXTURE_TEST_SUITE(util_jsapi_suite, js_test<util_jsapi>) |
0 | 29 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
30 /* |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
31 * Irccd.Util misc. |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
32 * ------------------------------------------------------------------ |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
33 */ |
0 | 34 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
35 BOOST_AUTO_TEST_CASE(format_simple) |
174
fcfa8ac395fd
Irccd: unbreak test-js-util
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
36 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
37 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
38 "result = Irccd.Util.format(\"#{target}\", { target: \"markand\" })" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
39 ); |
0 | 40 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
41 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
42 throw dukx_stack(plugin_->context(), -1); |
190
cb61cc16e2b6
Irccd: update all JavaScript to native code
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
43 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
44 BOOST_TEST(duk_get_global_string(plugin_->context(), "result")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
45 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "markand"); |
0 | 46 } |
47 | |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
48 BOOST_AUTO_TEST_CASE(splituser) |
0 | 49 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
50 if (duk_peval_string(plugin_->context(), "result = Irccd.Util.splituser(\"user!~user@hyper/super/host\");") != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
51 throw dukx_stack(plugin_->context(), -1); |
0 | 52 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
53 BOOST_TEST(duk_get_global_string(plugin_->context(), "result")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
54 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "user"); |
0 | 55 } |
56 | |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
57 BOOST_AUTO_TEST_CASE(splithost) |
0 | 58 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
59 if (duk_peval_string(plugin_->context(), "result = Irccd.Util.splithost(\"user!~user@hyper/super/host\");") != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
60 throw dukx_stack(plugin_->context(), -1); |
0 | 61 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
62 BOOST_TEST(duk_get_global_string(plugin_->context(), "result")); |
550
64cb98dd8e9d
Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents:
529
diff
changeset
|
63 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "~user@hyper/super/host"); |
0 | 64 } |
65 | |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
66 /* |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
67 * Irccd.Util.cut. |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
68 * ------------------------------------------------------------------ |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
69 */ |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
70 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
71 BOOST_AUTO_TEST_CASE(cut_string_simple) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
72 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
73 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
74 "lines = Irccd.Util.cut('hello world');\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
75 "line0 = lines[0];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
76 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
77 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
78 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
79 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
80 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
81 BOOST_TEST(duk_get_global_string(plugin_->context(), "line0")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
82 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "hello world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
83 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
84 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
85 BOOST_AUTO_TEST_CASE(cut_string_double) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
86 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
87 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
88 "lines = Irccd.Util.cut('hello world', 5);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
89 "line0 = lines[0];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
90 "line1 = lines[1];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
91 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
92 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
93 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
94 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
95 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
96 BOOST_TEST(duk_get_global_string(plugin_->context(), "line0")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
97 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "hello"); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
98 BOOST_TEST(duk_get_global_string(plugin_->context(), "line1")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
99 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
100 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
101 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
102 BOOST_AUTO_TEST_CASE(cut_string_dirty) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
103 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
104 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
105 "lines = Irccd.Util.cut(' hello world ', 5);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
106 "line0 = lines[0];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
107 "line1 = lines[1];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
108 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
109 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
110 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
111 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
112 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
113 BOOST_TEST(duk_get_global_string(plugin_->context(), "line0")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
114 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "hello"); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
115 BOOST_TEST(duk_get_global_string(plugin_->context(), "line1")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
116 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
117 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
118 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
119 BOOST_AUTO_TEST_CASE(cut_string_too_much_lines) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
120 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
121 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
122 "lines = Irccd.Util.cut('abc def ghi jkl', 3, 3);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
123 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
124 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
125 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
126 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
127 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
128 BOOST_TEST(duk_get_global_string(plugin_->context(), "lines")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
129 BOOST_TEST(duk_is_undefined(plugin_->context(), -1)); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
130 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
131 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
132 BOOST_AUTO_TEST_CASE(cut_string_token_too_big) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
133 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
134 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
135 "try {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
136 " lines = Irccd.Util.cut('hello world', 3);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
137 "} catch (e) {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
138 " name = e.name;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
139 " message = e.message;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
140 "}\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
141 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
142 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
143 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
144 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
145 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
146 BOOST_TEST(duk_get_global_string(plugin_->context(), "name")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
147 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "RangeError"); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
148 BOOST_TEST(duk_get_global_string(plugin_->context(), "message")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
149 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "word 'hello' could not fit in maxc limit (3)"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
150 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
151 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
152 BOOST_AUTO_TEST_CASE(cut_string_negative_maxc) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
153 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
154 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
155 "try {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
156 " lines = Irccd.Util.cut('hello world', -3);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
157 "} catch (e) {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
158 " name = e.name;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
159 " message = e.message;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
160 "}\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
161 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
162 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
163 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
164 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
165 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
166 BOOST_TEST(duk_get_global_string(plugin_->context(), "name")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
167 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "RangeError"); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
168 BOOST_TEST(duk_get_global_string(plugin_->context(), "message")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
169 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "argument 1 (maxc) must be positive"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
170 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
171 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
172 BOOST_AUTO_TEST_CASE(cut_string_negative_maxl) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
173 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
174 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
175 "try {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
176 " lines = Irccd.Util.cut('hello world', undefined, -1);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
177 "} catch (e) {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
178 " name = e.name;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
179 " message = e.message;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
180 "}\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
181 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
182 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
183 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
184 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
185 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
186 BOOST_TEST(duk_get_global_string(plugin_->context(), "name")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
187 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "RangeError"); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
188 BOOST_TEST(duk_get_global_string(plugin_->context(), "message")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
189 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "argument 2 (maxl) must be positive"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
190 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
191 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
192 BOOST_AUTO_TEST_CASE(cut_array_simple) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
193 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
194 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
195 "lines = Irccd.Util.cut([ 'hello', 'world' ]);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
196 "line0 = lines[0];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
197 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
198 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
199 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
200 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
201 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
202 BOOST_TEST(duk_get_global_string(plugin_->context(), "line0")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
203 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "hello world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
204 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
205 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
206 BOOST_AUTO_TEST_CASE(cut_array_double) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
207 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
208 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
209 "lines = Irccd.Util.cut([ 'hello', 'world' ], 5);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
210 "line0 = lines[0];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
211 "line1 = lines[1];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
212 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
213 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
214 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
215 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
216 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
217 BOOST_TEST(duk_get_global_string(plugin_->context(), "line0")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
218 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "hello"); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
219 BOOST_TEST(duk_get_global_string(plugin_->context(), "line1")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
220 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
221 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
222 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
223 BOOST_AUTO_TEST_CASE(cut_array_dirty) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
224 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
225 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
226 "lines = Irccd.Util.cut([ ' ', ' hello ', ' world ', ' '], 5);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
227 "line0 = lines[0];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
228 "line1 = lines[1];\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
229 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
230 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
231 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
232 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
233 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
234 BOOST_TEST(duk_get_global_string(plugin_->context(), "line0")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
235 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "hello"); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
236 BOOST_TEST(duk_get_global_string(plugin_->context(), "line1")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
237 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
238 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
239 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
240 BOOST_AUTO_TEST_CASE(cut_invalid_data) |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
241 { |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
242 auto ret = duk_peval_string(plugin_->context(), |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
243 "try {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
244 " lines = Irccd.Util.cut(123);\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
245 "} catch (e) {\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
246 " name = e.name;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
247 " message = e.message;\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
248 "}\n" |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
249 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
250 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
251 if (ret != 0) |
566
bf56628e070b
Irccd: import new Duktape helpers
David Demelier <markand@malikania.fr>
parents:
565
diff
changeset
|
252 throw dukx_stack(plugin_->context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
253 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
254 BOOST_TEST(duk_get_global_string(plugin_->context(), "name")); |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
255 BOOST_TEST(duk_get_string(plugin_->context(), -1) == "TypeError"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
256 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
257 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
258 BOOST_AUTO_TEST_SUITE_END() |
0 | 259 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
260 } // !irccd |