Mercurial > irccd
annotate tests/js-file/main.cpp @ 351:15da984ce7ea
Irccd: revert ownership as it's a cleaner solution
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 14 Nov 2016 13:32:38 +0100 |
parents | 287e9ede5eef |
children | c6fbb6e0e06d |
rev | line source |
---|---|
0 | 1 /* |
2 * main.cpp -- test Irccd.File API | |
3 * | |
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> | |
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 | |
19 #include <fstream> | |
20 | |
21 #include <gtest/gtest.h> | |
22 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
23 #include <irccd/irccd.hpp> |
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
24 #include <irccd/mod-file.hpp> |
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
25 #include <irccd/mod-irccd.hpp> |
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
26 #include <irccd/plugin-js.hpp> |
350 | 27 #include <irccd/service.hpp> |
0 | 28 |
29 using namespace irccd; | |
30 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
31 class TestJsFile : public testing::Test { |
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
32 protected: |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
33 Irccd m_irccd; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
34 std::shared_ptr<JsPlugin> m_plugin; |
0 | 35 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
36 TestJsFile() |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
37 : m_plugin(std::make_shared<JsPlugin>("empty", SOURCEDIR "/empty.js")) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
38 { |
351
15da984ce7ea
Irccd: revert ownership as it's a cleaner solution
David Demelier <markand@malikania.fr>
parents:
350
diff
changeset
|
39 IrccdModule().load(m_irccd, m_plugin); |
15da984ce7ea
Irccd: revert ownership as it's a cleaner solution
David Demelier <markand@malikania.fr>
parents:
350
diff
changeset
|
40 FileModule().load(m_irccd, m_plugin); |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
41 } |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
42 }; |
0 | 43 |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
44 TEST_F(TestJsFile, functionBasename) |
0 | 45 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
46 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
47 if (duk_peval_string(m_plugin->context(), "result = Irccd.File.basename('/usr/local/etc/irccd.conf');") != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
48 throw dukx_exception(m_plugin->context(), -1); |
0 | 49 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
50 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
51 ASSERT_STREQ("irccd.conf", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
52 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
53 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
54 } |
0 | 55 } |
56 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
57 TEST_F(TestJsFile, functionDirname) |
0 | 58 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
59 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
60 duk_peval_string(m_plugin->context(), "result = Irccd.File.dirname('/usr/local/etc/irccd.conf');"); |
0 | 61 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
62 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
63 ASSERT_STREQ("/usr/local/etc", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
64 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
65 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
66 } |
0 | 67 } |
68 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
69 TEST_F(TestJsFile, functionExists) |
0 | 70 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
71 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
72 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
73 duk_put_global_string(m_plugin->context(), "directory"); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
74 duk_peval_string(m_plugin->context(), "result = Irccd.File.exists(directory + '/file.txt')"); |
0 | 75 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
76 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
77 ASSERT_TRUE(duk_get_boolean(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
78 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
79 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
80 } |
0 | 81 } |
82 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
83 TEST_F(TestJsFile, functionExists2) |
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
84 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
85 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
86 duk_peval_string(m_plugin->context(), "result = Irccd.File.exists('file_which_does_not_exist.txt')"); |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
87 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
88 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
89 ASSERT_FALSE(duk_get_boolean(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
90 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
91 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
92 } |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
93 } |
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
94 |
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
95 TEST_F(TestJsFile, functionRemove) |
0 | 96 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
97 // First create a dummy file |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
98 std::ofstream("test-js-fs.remove"); |
0 | 99 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
100 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
101 if (duk_peval_string(m_plugin->context(), "Irccd.File.remove('test-js-fs.remove');") != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
102 throw dukx_exception(m_plugin->context(), -1); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
103 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
104 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
105 } |
0 | 106 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
107 std::ifstream in("test-js-fs.remove"); |
0 | 108 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
109 ASSERT_FALSE(in.is_open()); |
0 | 110 } |
111 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
112 TEST_F(TestJsFile, methodBasename) |
0 | 113 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
114 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
115 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
116 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 117 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
118 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
119 "f = new Irccd.File(directory + '/level-1/file-1.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
120 "result = f.basename();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
121 ); |
0 | 122 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
123 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
124 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
125 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
126 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
127 ASSERT_STREQ("file-1.txt", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
128 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
129 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
130 } |
0 | 131 } |
132 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
133 TEST_F(TestJsFile, methodBasenameClosed) |
0 | 134 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
135 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
136 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
137 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 138 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
139 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
140 "f = new Irccd.File(directory + '/level-1/file-1.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
141 "f.close();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
142 "result = f.basename();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
143 ); |
0 | 144 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
145 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
146 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
147 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
148 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
149 ASSERT_STREQ("file-1.txt", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
150 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
151 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
152 } |
0 | 153 } |
154 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
155 TEST_F(TestJsFile, methodDirname) |
0 | 156 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
157 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
158 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
159 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 160 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
161 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
162 "f = new Irccd.File(directory + '/level-1/file-1.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
163 "result = f.dirname();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
164 ); |
0 | 165 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
166 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
167 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
168 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
169 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
170 ASSERT_STREQ(IRCCD_TESTS_DIRECTORY "/level-1", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
171 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
172 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
173 } |
0 | 174 } |
175 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
176 TEST_F(TestJsFile, methodDirnameClosed) |
0 | 177 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
178 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
179 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
180 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 181 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
182 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
183 "f = new Irccd.File(directory + '/level-1/file-1.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
184 "f.close();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
185 "result = f.dirname();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
186 ); |
0 | 187 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
188 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
189 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
190 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
191 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
192 ASSERT_STREQ(IRCCD_TESTS_DIRECTORY "/level-1", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
193 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
194 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
195 } |
0 | 196 } |
197 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
198 TEST_F(TestJsFile, methodLines) |
77
c5f4ca941f79
Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
199 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
200 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
201 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
202 duk_put_global_string(m_plugin->context(), "directory"); |
77
c5f4ca941f79
Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
203 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
204 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
205 "result = new Irccd.File(directory + '/lines.txt', 'r').lines();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
206 ); |
77
c5f4ca941f79
Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
207 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
208 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
209 throw dukx_exception(m_plugin->context(), -1); |
77
c5f4ca941f79
Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
210 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
211 std::vector<std::string> expected{"a", "b", "c"}; |
77
c5f4ca941f79
Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
212 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
213 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
214 ASSERT_EQ(expected, dukx_get_array(m_plugin->context(), -1, dukx_get_std_string)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
215 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
216 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
217 } |
77
c5f4ca941f79
Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
218 } |
c5f4ca941f79
Irccd: add new Irccd.File.lines function, #445
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
219 |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
220 TEST_F(TestJsFile, methodSeek1) |
0 | 221 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
222 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
223 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
224 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 225 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
226 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
227 "f = new Irccd.File(directory + '/file.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
228 "f.seek(Irccd.File.SeekSet, 4);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
229 "result = f.read(1);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
230 ); |
0 | 231 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
232 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
233 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
234 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
235 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
236 ASSERT_EQ(".", dukx_get_std_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
237 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
238 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
239 } |
0 | 240 } |
241 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
242 TEST_F(TestJsFile, methodSeek1Closed) |
0 | 243 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
244 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
245 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
246 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 247 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
248 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
249 "f = new Irccd.File(directory + '/file.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
250 "f.close();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
251 "f.seek(Irccd.File.SeekSet, 4);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
252 "result = f.read(1);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
253 "result = typeof (result) === \"undefined\";" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
254 ); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
255 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
256 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
257 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
258 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
259 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
260 ASSERT_TRUE(duk_get_boolean(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
261 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
262 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
263 } |
0 | 264 } |
265 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
266 TEST_F(TestJsFile, methodSeek2) |
0 | 267 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
268 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
269 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
270 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 271 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
272 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
273 "f = new Irccd.File(directory + '/file.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
274 "f.seek(Irccd.File.SeekSet, 2);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
275 "f.seek(Irccd.File.SeekCur, 2);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
276 "result = f.read(1);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
277 ); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
278 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
279 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
280 throw dukx_exception(m_plugin->context(), -1); |
0 | 281 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
282 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
283 ASSERT_EQ(".", dukx_get_std_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
284 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
285 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
286 } |
0 | 287 } |
288 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
289 TEST_F(TestJsFile, methodSeek2Closed) |
0 | 290 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
291 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
292 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
293 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 294 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
295 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
296 "f = new Irccd.File(directory + '/file.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
297 "f.close();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
298 "f.seek(Irccd.File.SeekSet, 2);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
299 "f.seek(Irccd.File.SeekCur, 2);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
300 "result = f.read(1);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
301 "result = typeof (result) === \"undefined\";" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
302 ); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
303 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
304 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
305 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
306 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
307 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
308 ASSERT_TRUE(duk_get_boolean(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
309 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
310 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
311 } |
0 | 312 } |
313 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
314 TEST_F(TestJsFile, methodSeek3) |
0 | 315 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
316 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
317 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
318 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 319 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
320 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
321 "f = new Irccd.File(directory + '/file.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
322 "f.seek(Irccd.File.SeekEnd, -2);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
323 "result = f.read(1);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
324 ); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
325 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
326 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
327 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
328 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
329 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
330 ASSERT_STREQ("x", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
331 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
332 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
333 } |
0 | 334 } |
335 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
336 TEST_F(TestJsFile, methodSeek3Closed) |
0 | 337 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
338 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
339 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
340 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 341 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
342 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
343 "f = new Irccd.File(directory + '/file.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
344 "f.close();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
345 "f.seek(Irccd.File.SeekEnd, -2);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
346 "result = f.read(1);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
347 "result = typeof (result) === \"undefined\";" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
348 ); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
349 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
350 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
351 throw dukx_exception(m_plugin->context(), -1); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
352 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
353 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
354 ASSERT_TRUE(duk_get_boolean(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
355 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
356 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
357 } |
0 | 358 } |
359 | |
197
1b3365343b18
Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents:
196
diff
changeset
|
360 TEST_F(TestJsFile, methodRead1) |
1b3365343b18
Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents:
196
diff
changeset
|
361 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
362 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
363 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
364 duk_put_global_string(m_plugin->context(), "directory"); |
197
1b3365343b18
Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents:
196
diff
changeset
|
365 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
366 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
367 "f = new Irccd.File(directory + '/file.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
368 "result = f.read();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
369 ); |
197
1b3365343b18
Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents:
196
diff
changeset
|
370 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
371 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
372 throw dukx_exception(m_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
|
373 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
374 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
375 ASSERT_STREQ("file.txt", duk_get_string(m_plugin->context(), -1)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
376 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
377 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
378 } |
197
1b3365343b18
Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents:
196
diff
changeset
|
379 } |
1b3365343b18
Irccd: fix default amount in Irccd.File.read to -1 and add test
David Demelier <markand@malikania.fr>
parents:
196
diff
changeset
|
380 |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
381 TEST_F(TestJsFile, methodReadline) |
0 | 382 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
383 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
384 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
385 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 386 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
387 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
388 "result = [];" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
389 "f = new Irccd.File(directory + '/lines.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
390 "for (var s; s = f.readline(); ) {" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
391 " result.push(s);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
392 "}" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
393 ); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
394 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
395 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
396 throw dukx_exception(m_plugin->context(), -1); |
0 | 397 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
398 std::vector<std::string> expected{"a", "b", "c"}; |
0 | 399 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
400 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
401 ASSERT_EQ(expected, dukx_get_array(m_plugin->context(), -1, dukx_get_std_string)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
402 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
403 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
404 } |
0 | 405 } |
406 | |
168
66dc46db79f7
Irccd: unbreak test-js-file
David Demelier <markand@malikania.fr>
parents:
111
diff
changeset
|
407 TEST_F(TestJsFile, methodReadlineClosed) |
0 | 408 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
409 try { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
410 duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
411 duk_put_global_string(m_plugin->context(), "directory"); |
0 | 412 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
413 auto ret = duk_peval_string(m_plugin->context(), |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
414 "result = [];" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
415 "f = new Irccd.File(directory + '/lines.txt', 'r');" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
416 "f.close();" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
417 "for (var s; s = f.readline(); ) {" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
418 " result.push(s);" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
419 "}" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
420 ); |
75
f8160d515a76
Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
421 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
422 if (ret != 0) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
423 throw dukx_exception(m_plugin->context(), -1); |
0 | 424 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
425 std::vector<std::string> expected; |
0 | 426 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
427 ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
428 ASSERT_EQ(expected, dukx_get_array(m_plugin->context(), -1, dukx_get_std_string)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
429 } catch (const std::exception &ex) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
430 FAIL() << ex.what(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
431 } |
0 | 432 } |
433 | |
434 int main(int argc, char **argv) | |
435 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
436 testing::InitGoogleTest(&argc, argv); |
0 | 437 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
197
diff
changeset
|
438 return RUN_ALL_TESTS(); |
0 | 439 } |