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