Mercurial > irccd
annotate tests/src/libirccd-js/js-api-util/main.cpp @ 824:06cc2f95f479
misc: happy new year!
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 08 Jan 2019 20:41:20 +0100 |
parents | 8c44bbcbbab9 |
children | 5e25439fe98d |
rev | line source |
---|---|
0 | 1 /* |
2 * main.cpp -- test Irccd.Util API | |
3 * | |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
773
diff
changeset
|
4 * Copyright (c) 2013-2019 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 |
758
445c071e8efb
Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents:
757
diff
changeset
|
22 #include <irccd/test/js_fixture.hpp> |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
23 |
760
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
24 using namespace irccd::js; |
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
25 using namespace irccd::test; |
0 | 26 |
760
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
27 namespace irccd { |
758
445c071e8efb
Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents:
757
diff
changeset
|
28 |
723
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
29 namespace { |
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
30 |
758
445c071e8efb
Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents:
757
diff
changeset
|
31 BOOST_FIXTURE_TEST_SUITE(util_js_api_suite, js_fixture) |
0 | 32 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
33 /* |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
34 * Irccd.Util misc. |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
35 * ------------------------------------------------------------------ |
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
36 */ |
0 | 37 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
38 BOOST_AUTO_TEST_CASE(format_simple) |
174
fcfa8ac395fd
Irccd: unbreak test-js-util
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
39 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
40 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
41 "result = Irccd.Util.format(\"#{target}\", { target: \"markand\" })" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
42 ); |
0 | 43 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
44 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
45 throw duk::get_stack(plugin_->get_context(), -1); |
190
cb61cc16e2b6
Irccd: update all JavaScript to native code
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
46 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
47 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
48 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "markand"); |
0 | 49 } |
50 | |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
51 BOOST_AUTO_TEST_CASE(splituser) |
0 | 52 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
53 if (duk_peval_string(plugin_->get_context(), "result = Irccd.Util.splituser(\"user!~user@hyper/super/host\");") != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
54 throw duk::get_stack(plugin_->get_context(), -1); |
0 | 55 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
56 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
57 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "user"); |
0 | 58 } |
59 | |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
60 BOOST_AUTO_TEST_CASE(splithost) |
0 | 61 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
62 if (duk_peval_string(plugin_->get_context(), "result = Irccd.Util.splithost(\"user!~user@hyper/super/host\");") != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
63 throw duk::get_stack(plugin_->get_context(), -1); |
0 | 64 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
65 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
66 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "~user@hyper/super/host"); |
0 | 67 } |
68 | |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
69 /* |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
70 * Irccd.Util.cut. |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
71 * ------------------------------------------------------------------ |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
72 */ |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
73 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
74 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
|
75 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
76 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
77 "lines = Irccd.Util.cut('hello world');\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
78 "line0 = lines[0];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
79 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
80 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
81 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
82 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
83 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
84 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line0")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
85 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "hello world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
86 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
87 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
88 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
|
89 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
90 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
91 "lines = Irccd.Util.cut('hello world', 5);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
92 "line0 = lines[0];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
93 "line1 = lines[1];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
94 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
95 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
96 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
97 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
98 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
99 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line0")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
100 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "hello"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
101 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line1")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
102 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
103 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
104 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
105 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
|
106 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
107 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
108 "lines = Irccd.Util.cut(' hello world ', 5);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
109 "line0 = lines[0];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
110 "line1 = lines[1];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
111 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
112 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
113 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
114 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
115 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
116 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line0")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
117 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "hello"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
118 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line1")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
119 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
120 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
121 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
122 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
|
123 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
124 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
125 "lines = Irccd.Util.cut('abc def ghi jkl', 3, 3);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
126 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
127 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
128 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
129 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
130 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
131 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "lines")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
132 BOOST_TEST(duk_is_undefined(plugin_->get_context(), -1)); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
133 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
134 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
135 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
|
136 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
137 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
138 "try {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
139 " lines = Irccd.Util.cut('hello world', 3);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
140 "} catch (e) {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
141 " name = e.name;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
142 " message = e.message;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
143 "}\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
144 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
145 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
146 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
147 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
148 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
149 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "name")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
150 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "RangeError"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
151 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "message")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
152 BOOST_TEST(duk_get_string(plugin_->get_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
|
153 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
154 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
155 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
|
156 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
157 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
158 "try {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
159 " lines = Irccd.Util.cut('hello world', -3);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
160 "} catch (e) {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
161 " name = e.name;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
162 " message = e.message;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
163 "}\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
164 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
165 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
166 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
167 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
168 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
169 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "name")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
170 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "RangeError"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
171 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "message")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
172 BOOST_TEST(duk_get_string(plugin_->get_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
|
173 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
174 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
175 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
|
176 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
177 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
178 "try {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
179 " lines = Irccd.Util.cut('hello world', undefined, -1);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
180 "} catch (e) {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
181 " name = e.name;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
182 " message = e.message;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
183 "}\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
184 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
185 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
186 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
187 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
188 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
189 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "name")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
190 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "RangeError"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
191 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "message")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
192 BOOST_TEST(duk_get_string(plugin_->get_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
|
193 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
194 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
195 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
|
196 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
197 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
198 "lines = Irccd.Util.cut([ 'hello', 'world' ]);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
199 "line0 = lines[0];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
200 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
201 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
202 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
203 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
204 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
205 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line0")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
206 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "hello world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
207 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
208 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
209 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
|
210 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
211 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
212 "lines = Irccd.Util.cut([ 'hello', 'world' ], 5);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
213 "line0 = lines[0];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
214 "line1 = lines[1];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
215 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
216 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
217 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
218 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
219 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
220 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line0")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
221 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "hello"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
222 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line1")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
223 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
224 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
225 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
226 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
|
227 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
228 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
229 "lines = Irccd.Util.cut([ ' ', ' hello ', ' world ', ' '], 5);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
230 "line0 = lines[0];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
231 "line1 = lines[1];\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
232 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
233 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
234 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
235 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
236 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
237 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line0")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
238 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "hello"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
239 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "line1")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
240 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "world"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
241 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
242 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
243 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
|
244 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
245 const auto ret = duk_peval_string(plugin_->get_context(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
246 "try {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
247 " lines = Irccd.Util.cut(123);\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
248 "} catch (e) {\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
249 " name = e.name;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
250 " message = e.message;\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
251 "}\n" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
252 ); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
253 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
254 if (ret != 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
255 throw duk::get_stack(plugin_->get_context(), -1); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
256 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
257 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "name")); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
760
diff
changeset
|
258 BOOST_TEST(duk_get_string(plugin_->get_context(), -1) == "TypeError"); |
424
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
259 } |
cd3f7c712d9e
Irccd: add new Irccd.Util.cut function, closes #635
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
260 |
492
173c52d3120b
Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
261 BOOST_AUTO_TEST_SUITE_END() |
0 | 262 |
723
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
263 } // !namespace |
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
264 |
760
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
265 } // !irccd |