annotate tests/src/libirccd-js/js-api-file/main.cpp @ 763:4283dc118339

Irccd: style (transport_util)
author David Demelier <markand@malikania.fr>
date Mon, 13 Aug 2018 13:50:11 +0200
parents 35c1517d705d
children 8c44bbcbbab9
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
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
24 #include <irccd/test/js_fixture.hpp>
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
25
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
26 using namespace irccd::js;
760
35c1517d705d Tests: make consistency
David Demelier <markand@malikania.fr>
parents: 758
diff changeset
27 using namespace irccd::test;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
760
35c1517d705d Tests: make consistency
David Demelier <markand@malikania.fr>
parents: 758
diff changeset
29 namespace irccd {
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
31 namespace {
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
32
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
33 class file_js_fixture : public js_fixture {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
34 public:
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
35 file_js_fixture()
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
36 {
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
37 duk::push(plugin_->get_context(), CMAKE_SOURCE_DIR);
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
38 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
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
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
42 BOOST_FIXTURE_TEST_SUITE(file_js_api_suite, file_js_fixture)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
44 BOOST_AUTO_TEST_CASE(function_basename)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
46 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.basename('/usr/local/etc/irccd.conf');"))
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
47 throw duk::get_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
49 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
50 BOOST_TEST("irccd.conf" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
53 BOOST_AUTO_TEST_CASE(function_dirname)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
55 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.dirname('/usr/local/etc/irccd.conf');"))
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
56 throw duk::get_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
58 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
59 BOOST_TEST("/usr/local/etc" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
62 BOOST_AUTO_TEST_CASE(function_exists)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
64 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.exists(CMAKE_SOURCE_DIR + '/tests/root/file-1.txt')"))
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
65 throw duk::get_stack(plugin_->get_context(), -1);
529
b3a0f61a35fe Irccdctl: rename module to jsapi, closes #727
David Demelier <markand@malikania.fr>
parents: 492
diff changeset
66
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
67 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
68 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
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(function_exists2)
168
66dc46db79f7 Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents: 111
diff changeset
72 {
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
73 if (duk_peval_string(plugin_->get_context(), "result = Irccd.File.exists('file_which_does_not_exist.txt')"))
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
74 throw duk::get_stack(plugin_->get_context(), -1);
529
b3a0f61a35fe Irccdctl: rename module to jsapi, closes #727
David Demelier <markand@malikania.fr>
parents: 492
diff changeset
75
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
76 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
77 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
78 }
66dc46db79f7 Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents: 111
diff changeset
79
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
80 BOOST_AUTO_TEST_CASE(function_remove)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
82 // First create a dummy file
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
83 std::ofstream("test-js-fs.remove");
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
85 if (duk_peval_string(plugin_->get_context(), "Irccd.File.remove('test-js-fs.remove');") != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
86 throw duk::get_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
88 std::ifstream in("test-js-fs.remove");
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
90 BOOST_TEST(!in.is_open());
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
93 BOOST_AUTO_TEST_CASE(method_basename)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
95 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
96 "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
97 "result = f.basename();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
98 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
100 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
101 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
102
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
103 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
104 BOOST_TEST("file-1.txt" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
107 BOOST_AUTO_TEST_CASE(method_basename_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
109 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
110 "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
111 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
112 "result = f.basename();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
113 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
115 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
116 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
117
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
118 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
119 BOOST_TEST("file-1.txt" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
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(method_dirname)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
124 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
125 "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
126 "result = f.dirname();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
127 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
129 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
130 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
131
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
132 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
133 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
134 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
136 BOOST_AUTO_TEST_CASE(method_dirname_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
138 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
139 "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
140 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
141 "result = f.dirname();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
142 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
144 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
145 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
146
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
147 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
148 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
149 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
151 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
152 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
153 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
154 "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
155 );
77
c5f4ca941f79 Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
156
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
157 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
158 throw duk::get_stack(plugin_->get_context(), -1);
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
159
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
160 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
161
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
162 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
163 BOOST_TEST(expected == duk::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
164 }
c5f4ca941f79 Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
165
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
166 BOOST_AUTO_TEST_CASE(method_seek1)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
168 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
169 "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
170 "f.seek(Irccd.File.SeekSet, 6);"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
171 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
172 );
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
174 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
175 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
176
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
177 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
178 BOOST_TEST(".", duk::get<std::string>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
181 BOOST_AUTO_TEST_CASE(method_seek1_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
183 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
184 "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
185 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
186 "f.seek(Irccd.File.SeekSet, 4);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
187 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
188 "result = typeof (result) === \"undefined\";"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
189 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
190
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
191 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
192 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
193
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
194 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
195 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
197
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
198 BOOST_AUTO_TEST_CASE(method_seek2)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
200 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
201 "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
202 "f.seek(Irccd.File.SeekSet, 2);"
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
203 "f.seek(Irccd.File.SeekCur, 4);"
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
204 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
205 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
206
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
207 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
208 throw duk::get_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
209
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
210 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
211 BOOST_TEST("." == duk::get<std::string>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
213
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
214 BOOST_AUTO_TEST_CASE(method_seek2c_losed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
216 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
217 "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
218 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
219 "f.seek(Irccd.File.SeekSet, 2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
220 "f.seek(Irccd.File.SeekCur, 2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
221 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
222 "result = typeof (result) === \"undefined\";"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
223 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
224
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
225 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
226 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
227
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
228 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
229 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
231
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
232 BOOST_AUTO_TEST_CASE(method_seek3)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
234 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
235 "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
236 "f.seek(Irccd.File.SeekEnd, -2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
237 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
238 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
239
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
240 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
241 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
242
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
243 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
244 BOOST_TEST("t" == duk_get_string(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
246
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
247 BOOST_AUTO_TEST_CASE(method_seek3_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
249 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
250 "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
251 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
252 "f.seek(Irccd.File.SeekEnd, -2);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
253 "result = f.read(1);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
254 "result = typeof (result) === \"undefined\";"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
255 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
256
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
257 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
258 throw duk::get_stack(plugin_->get_context(), -1);
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
259
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
260 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
261 BOOST_TEST(duk_get_boolean(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
263
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
264 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
265 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
266 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
267 "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
268 "result = f.read();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
269 );
197
1b3365343b18 Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
270
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
271 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
272 throw duk::get_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
273
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
274 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
275 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
276 }
1b3365343b18 Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
277
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
278 BOOST_AUTO_TEST_CASE(method_readline)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
280 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
281 "result = [];"
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
282 "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
283 "for (var s; s = f.readline(); ) {"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
284 " result.push(s);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
285 "}"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
286 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
287
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
288 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
289 throw duk::get_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
290
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
291 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
292
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
293 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
294 BOOST_TEST(expected == duk::get<std::vector<std::string>>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
296
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
297 BOOST_AUTO_TEST_CASE(method_readline_closed)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
299 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
300 "result = [];"
532
c59b87f66b67 CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents: 529
diff changeset
301 "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
302 "f.close();"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
303 "for (var s; s = f.readline(); ) {"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
304 " result.push(s);"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
305 "}"
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
306 );
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
307
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
308 if (ret != 0)
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
309 throw duk::get_stack(plugin_->get_context(), -1);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
310
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
311 std::vector<std::string> expected;
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
312
722
3e816cebed2c Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
313 BOOST_TEST(duk_get_global_string(plugin_->get_context(), "result"));
758
445c071e8efb Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents: 757
diff changeset
314 BOOST_TEST(expected == duk::get<std::vector<std::string>>(plugin_->get_context(), -1));
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
316
492
173c52d3120b Tests: create js_test fixture, closes #688
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
317 BOOST_AUTO_TEST_SUITE_END()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
318
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
319 } // !namespace
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
320
760
35c1517d705d Tests: make consistency
David Demelier <markand@malikania.fr>
parents: 758
diff changeset
321 } // !irccd