annotate tests/src/libirccd-js/jsapi-file/main.cpp @ 757:97b356010785

Irccd: create (command|jsapi)::registry Make two list of constructor functions to initialize all command and all Javascript modules to avoid duplicating efforts in case of change. While here, update test fixtures to load all of them for simplicity.
author David Demelier <markand@malikania.fr>
date Mon, 06 Aug 2018 21:27:00 +0200
parents e8c4ba5ed1c6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test Irccd.File API
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 611
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
19 #define BOOST_TEST_MODULE "File 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>
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
21
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <fstream>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
588
be1656362297 Irccd: refactor Javascript calls, closes #747
David Demelier <markand@malikania.fr>
parents: 584
diff changeset
24 #include <irccd/js/duktape_vector.hpp>
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
25
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
26 #include <irccd/test/javascript_fixture.hpp>
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
28 namespace irccd::test {
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
30 namespace {
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
31
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
32 class file_javascript_fixture : public javascript_fixture {
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
33 public:
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
34 file_javascript_fixture()
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
35 {
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
36 dukx_push(plugin_->get_context(), CMAKE_SOURCE_DIR);
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
37 duk_put_global_string(plugin_->get_context(), "CMAKE_SOURCE_DIR");
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
38 }
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
39 };
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
40
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
41 BOOST_FIXTURE_TEST_SUITE(file_jsapi_suite, file_javascript_fixture)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
43 BOOST_AUTO_TEST_CASE(function_basename)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
45 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.basename('/usr/local/etc/irccd.conf');"))
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
46 throw dukx_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
48 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
49 BOOST_TEST("irccd.conf" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
52 BOOST_AUTO_TEST_CASE(function_dirname)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
54 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.dirname('/usr/local/etc/irccd.conf');"))
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
55 throw dukx_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
57 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
58 BOOST_TEST("/usr/local/etc" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
61 BOOST_AUTO_TEST_CASE(function_exists)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
63 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.exists(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt')"))
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
64 throw dukx_stack(plugin_->get_context(), -1);
529
b3a0f61a35fe Irccdctl: rename module to jsapi, closes #727
David Demelier <markand@malikania.fr>
parents: 492
diff changeset
65
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
66 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
67 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
70 BOOST_AUTO_TEST_CASE(function_exists2)
168
66dc46db79f7 Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents: 111
diff changeset
71 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
72 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.exists('file_which_does_not_exist.txt')"))
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
73 throw dukx_stack(plugin_->get_context(), -1);
529
b3a0f61a35fe Irccdctl: rename module to jsapi, closes #727
David Demelier <markand@malikania.fr>
parents: 492
diff changeset
74
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
75 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
76 BOOST_TEST(!duk_get_boolean(plugin_->get_context(), -1));
168
66dc46db79f7 Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents: 111
diff changeset
77 }
66dc46db79f7 Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents: 111
diff changeset
78
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
79 BOOST_AUTO_TEST_CASE(function_remove)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
81 // First create a dummy file
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
82 std::ofstream("test-js-fs.remove");
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
84 if (duk_peval_string(plugin_->get_context(), "Irccd.File.remove('test-js-fs.remove');") != 0)
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
85 throw dukx_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
87 std::ifstream in("test-js-fs.remove");
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
89 BOOST_TEST(!in.is_open());
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
92 BOOST_AUTO_TEST_CASE(method_basename)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
94 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
95 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
96 "result = f.basename();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
97 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
99 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
100 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
101
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
102 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
103 BOOST_TEST("file-1.txt" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
106 BOOST_AUTO_TEST_CASE(method_basename_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
108 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
109 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
110 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
111 "result = f.basename();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
112 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
114 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
115 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
116
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
117 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
118 BOOST_TEST("file-1.txt" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
121 BOOST_AUTO_TEST_CASE(method_dirname)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
123 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
124 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
125 "result = f.dirname();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
126 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
128 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
129 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
130
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
131 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
132 BOOST_TEST(CMAKE_SOURCE_DIR "/tests/root" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
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(method_dirname_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
137 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
138 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
139 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
140 "result = f.dirname();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
141 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
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)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
144 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
145
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
146 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
147 BOOST_TEST(CMAKE_SOURCE_DIR "/tests/root" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
150 BOOST_AUTO_TEST_CASE(method_lines)
77
c5f4ca941f79 Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
151 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
152 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
153 "result = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/lines.txt', 'r').lines();"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
154 );
77
c5f4ca941f79 Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
155
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
156 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
157 throw dukx_stack(plugin_->get_context(), -1);
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
158
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
159 std::vector<std::string> expected{"a", "b", "c"};
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
160
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
161 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
162 BOOST_TEST(expected == dukx_get<std::vector<std::string>>(plugin_->get_context(), -1));
77
c5f4ca941f79 Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
163 }
c5f4ca941f79 Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
164
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
165 BOOST_AUTO_TEST_CASE(method_seek1)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
167 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
168 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
169 "f.seek(Irccd.File.SeekSet, 6);"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
170 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
171 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
173 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
174 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
175
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
176 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
177 BOOST_TEST(".", dukx_get<std::string>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
180 BOOST_AUTO_TEST_CASE(method_seek1_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
182 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
183 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
184 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
185 "f.seek(Irccd.File.SeekSet, 4);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
186 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
187 "result = typeof (result) === \"undefined\";"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
188 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
189
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
190 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
191 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
192
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
193 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
194 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
196
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
197 BOOST_AUTO_TEST_CASE(method_seek2)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
199 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
200 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
201 "f.seek(Irccd.File.SeekSet, 2);"
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
202 "f.seek(Irccd.File.SeekCur, 4);"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
203 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
204 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
205
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
206 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
207 throw dukx_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
208
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
209 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
210 BOOST_TEST("." == dukx_get<std::string>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
213 BOOST_AUTO_TEST_CASE(method_seek2c_losed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
215 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
216 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
217 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
218 "f.seek(Irccd.File.SeekSet, 2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
219 "f.seek(Irccd.File.SeekCur, 2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
220 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
221 "result = typeof (result) === \"undefined\";"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
222 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
223
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
224 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
225 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
226
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
227 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
228 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
230
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
231 BOOST_AUTO_TEST_CASE(method_seek3)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
233 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
234 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
235 "f.seek(Irccd.File.SeekEnd, -2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
236 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
237 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
238
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
239 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
240 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
241
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
242 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
243 BOOST_TEST("t" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
245
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
246 BOOST_AUTO_TEST_CASE(method_seek3_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
248 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
249 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
250 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
251 "f.seek(Irccd.File.SeekEnd, -2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
252 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
253 "result = typeof (result) === \"undefined\";"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
254 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
255
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
256 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
257 throw dukx_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
258
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
259 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
260 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
262
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
263 BOOST_AUTO_TEST_CASE(method_read1)
197
1b3365343b18 Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
264 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
265 const auto ret = duk_peval_string(plugin_->get_context(),
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
266 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
267 "result = f.read();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
268 );
197
1b3365343b18 Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
269
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
270 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
271 throw dukx_stack(plugin_->get_context(), -1);
197
1b3365343b18 Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
272
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
273 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
274 BOOST_TEST("file-1.txt\n" == duk_get_string(plugin_->get_context(), -1));
197
1b3365343b18 Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
275 }
1b3365343b18 Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
276
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
277 BOOST_AUTO_TEST_CASE(method_readline)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
279 const auto ret = duk_peval_string(plugin_->get_context(),
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
280 "result = [];"
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
281 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/lines.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
282 "for (var s; s = f.readline(); ) {"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
283 " result.push(s);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
284 "}"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
285 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
286
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
287 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
288 throw dukx_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
289
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
290 std::vector<std::string> expected{"a", "b", "c"};
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
291
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
292 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
293 BOOST_TEST(expected == dukx_get<std::vector<std::string>>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
295
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
296 BOOST_AUTO_TEST_CASE(method_readline_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
298 const auto ret = duk_peval_string(plugin_->get_context(),
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
299 "result = [];"
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
300 "f = new Irccd.File(CMAKE_SOURCE_DIR + '/tests/root/lines.txt', 'r');"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
301 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
302 "for (var s; s = f.readline(); ) {"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
303 " result.push(s);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
304 "}"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
305 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
306
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
307 if (ret != 0)
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
308 throw dukx_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
309
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
310 std::vector<std::string> expected;
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
311
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
312 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
313 BOOST_TEST(expected == dukx_get<std::vector<std::string>>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
315
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
316 BOOST_AUTO_TEST_SUITE_END()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
317
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
318 } // !namespace
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
319
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
320 } // !irccd::test