comparison tests/libcommon/js-point/main.cpp @ 189:f28cb6d04731

Misc: extreme refactoring
author David Demelier <markand@malikania.fr>
date Thu, 25 Oct 2018 21:36:14 +0200
parents 0cecdadfb5c4
children
comparison
equal deleted inserted replaced
188:0cecdadfb5c4 189:f28cb6d04731
19 #define BOOST_TEST_MODULE "Javascript Point" 19 #define BOOST_TEST_MODULE "Javascript Point"
20 #include <boost/test/unit_test.hpp> 20 #include <boost/test/unit_test.hpp>
21 21
22 #include <malikania/point.hpp> 22 #include <malikania/point.hpp>
23 23
24 #include <malikania/js_point.hpp>
25
26 #include <malikania/js/test/js_api_fixture.hpp> 24 #include <malikania/js/test/js_api_fixture.hpp>
27 25
28 namespace mlk { 26 namespace mlk {
29 27
30 namespace { 28 namespace {
45 "x = p.x;" 43 "x = p.x;"
46 "y = p.y;" 44 "y = p.y;"
47 ); 45 );
48 46
49 if (ret != 0) 47 if (ret != 0)
50 throw duk::get_stack(ctx_, -1); 48 throw mlk::js::duk::get_stack(ctx_, -1);
51 49
52 duk_get_global_string(ctx_, "x"); 50 duk_get_global_string(ctx_, "x");
53 BOOST_TEST(duk_to_int(ctx_, -1) == 0); 51 BOOST_TEST(duk_to_int(ctx_, -1) == 0);
54 duk_pop(ctx_); 52 duk_pop(ctx_);
55 duk_get_global_string(ctx_, "y"); 53 duk_get_global_string(ctx_, "y");
64 "x = p.x;" 62 "x = p.x;"
65 "y = p.y;" 63 "y = p.y;"
66 ); 64 );
67 65
68 if (ret != 0) 66 if (ret != 0)
69 throw duk::get_stack(ctx_, -1); 67 throw mlk::js::duk::get_stack(ctx_, -1);
70 68
71 duk_get_global_string(ctx_, "x"); 69 duk_get_global_string(ctx_, "x");
72 BOOST_TEST(duk_to_int(ctx_, -1) == -10); 70 BOOST_TEST(duk_to_int(ctx_, -1) == -10);
73 duk_pop(ctx_); 71 duk_pop(ctx_);
74 duk_get_global_string(ctx_, "y"); 72 duk_get_global_string(ctx_, "y");
83 "x = p.x;" 81 "x = p.x;"
84 "y = p.y;" 82 "y = p.y;"
85 ); 83 );
86 84
87 if (ret != 0) 85 if (ret != 0)
88 throw duk::get_stack(ctx_, -1); 86 throw mlk::js::duk::get_stack(ctx_, -1);
89 87
90 duk_get_global_string(ctx_, "x"); 88 duk_get_global_string(ctx_, "x");
91 BOOST_TEST(duk_to_int(ctx_, -1) == 100); 89 BOOST_TEST(duk_to_int(ctx_, -1) == 100);
92 duk_pop(ctx_); 90 duk_pop(ctx_);
93 duk_get_global_string(ctx_, "y"); 91 duk_get_global_string(ctx_, "y");
102 "x = p.x;" 100 "x = p.x;"
103 "y = p.y;" 101 "y = p.y;"
104 ); 102 );
105 103
106 if (ret != 0) 104 if (ret != 0)
107 throw duk::get_stack(ctx_, -1); 105 throw mlk::js::duk::get_stack(ctx_, -1);
108 106
109 duk_get_global_string(ctx_, "x"); 107 duk_get_global_string(ctx_, "x");
110 BOOST_TEST(duk_to_int(ctx_, -1) == 100); 108 BOOST_TEST(duk_to_int(ctx_, -1) == 100);
111 duk_pop(ctx_); 109 duk_pop(ctx_);
112 duk_get_global_string(ctx_, "y"); 110 duk_get_global_string(ctx_, "y");
133 " correct = (e instanceof TypeError);" 131 " correct = (e instanceof TypeError);"
134 "}" 132 "}"
135 ); 133 );
136 134
137 if (ret != 0) 135 if (ret != 0)
138 throw duk::get_stack(ctx_, -1); 136 throw mlk::js::duk::get_stack(ctx_, -1);
139 137
140 duk_get_global_string(ctx_, "name"); 138 duk_get_global_string(ctx_, "name");
141 BOOST_TEST(duk_to_string(ctx_, -1) == "TypeError"); 139 BOOST_TEST(duk_to_string(ctx_, -1) == "TypeError");
142 duk_pop(ctx_); 140 duk_pop(ctx_);
143 duk_get_global_string(ctx_, "correct"); 141 duk_get_global_string(ctx_, "correct");
155 BOOST_AUTO_TEST_SUITE(require) 153 BOOST_AUTO_TEST_SUITE(require)
156 154
157 BOOST_AUTO_TEST_CASE(success) 155 BOOST_AUTO_TEST_CASE(success)
158 { 156 {
159 duk_push_c_function(ctx_, [] (auto ctx) { 157 duk_push_c_function(ctx_, [] (auto ctx) {
160 const auto point = duk::require<mlk::point>(ctx, 0); 158 const auto point = mlk::js::duk::require<mlk::point>(ctx, 0);
161 159
162 duk_push_int(ctx, point.x); 160 duk_push_int(ctx, point.x);
163 duk_put_global_string(ctx, "x"); 161 duk_put_global_string(ctx, "x");
164 duk_push_int(ctx, point.y); 162 duk_push_int(ctx, point.y);
165 duk_put_global_string(ctx, "y"); 163 duk_put_global_string(ctx, "y");
169 duk_put_global_string(ctx_, "build"); 167 duk_put_global_string(ctx_, "build");
170 168
171 const auto ret = duk_peval_string(ctx_, "build({ x: 100, y: 200 });"); 169 const auto ret = duk_peval_string(ctx_, "build({ x: 100, y: 200 });");
172 170
173 if (ret != 0) 171 if (ret != 0)
174 throw duk::get_stack(ctx_, -1); 172 throw mlk::js::duk::get_stack(ctx_, -1);
175 173
176 duk_get_global_string(ctx_, "x"); 174 duk_get_global_string(ctx_, "x");
177 BOOST_TEST(duk_to_int(ctx_, -1) == 100); 175 BOOST_TEST(duk_to_int(ctx_, -1) == 100);
178 duk_pop(ctx_); 176 duk_pop(ctx_);
179 duk_get_global_string(ctx_, "y"); 177 duk_get_global_string(ctx_, "y");
182 } 180 }
183 181
184 BOOST_AUTO_TEST_CASE(fail) 182 BOOST_AUTO_TEST_CASE(fail)
185 { 183 {
186 duk_push_c_function(ctx_, [] (auto ctx) { 184 duk_push_c_function(ctx_, [] (auto ctx) {
187 duk::require<mlk::point>(ctx, 0); 185 mlk::js::duk::require<mlk::point>(ctx, 0);
188 186
189 return 0; 187 return 0;
190 }, 1); 188 }, 1);
191 duk_put_global_string(ctx_, "build"); 189 duk_put_global_string(ctx_, "build");
192 190
198 " correct = (e instanceof TypeError);" 196 " correct = (e instanceof TypeError);"
199 "}" 197 "}"
200 ); 198 );
201 199
202 if (ret != 0) 200 if (ret != 0)
203 throw duk::get_stack(ctx_, -1); 201 throw mlk::js::duk::get_stack(ctx_, -1);
204 202
205 duk_get_global_string(ctx_, "name"); 203 duk_get_global_string(ctx_, "name");
206 BOOST_TEST(duk_to_string(ctx_, -1) == "TypeError"); 204 BOOST_TEST(duk_to_string(ctx_, -1) == "TypeError");
207 duk_pop(ctx_); 205 duk_pop(ctx_);
208 duk_get_global_string(ctx_, "correct"); 206 duk_get_global_string(ctx_, "correct");
220 BOOST_AUTO_TEST_SUITE(get) 218 BOOST_AUTO_TEST_SUITE(get)
221 219
222 BOOST_AUTO_TEST_CASE(adjust_all) 220 BOOST_AUTO_TEST_CASE(adjust_all)
223 { 221 {
224 duk_push_c_function(ctx_, [] (auto ctx) { 222 duk_push_c_function(ctx_, [] (auto ctx) {
225 const auto point = duk::get<mlk::point>(ctx, 0); 223 const auto point = mlk::js::duk::get<mlk::point>(ctx, 0);
226 224
227 duk_push_int(ctx, point.x); 225 duk_push_int(ctx, point.x);
228 duk_put_global_string(ctx, "x"); 226 duk_put_global_string(ctx, "x");
229 duk_push_int(ctx, point.y); 227 duk_push_int(ctx, point.y);
230 duk_put_global_string(ctx, "y"); 228 duk_put_global_string(ctx, "y");
234 duk_put_global_string(ctx_, "build"); 232 duk_put_global_string(ctx_, "build");
235 233
236 const auto ret = duk_peval_string(ctx_, "build({});"); 234 const auto ret = duk_peval_string(ctx_, "build({});");
237 235
238 if (ret != 0) 236 if (ret != 0)
239 throw duk::get_stack(ctx_, -1); 237 throw mlk::js::duk::get_stack(ctx_, -1);
240 238
241 duk_get_global_string(ctx_, "x"); 239 duk_get_global_string(ctx_, "x");
242 BOOST_TEST(duk_to_int(ctx_, -1) == 0); 240 BOOST_TEST(duk_to_int(ctx_, -1) == 0);
243 duk_pop(ctx_); 241 duk_pop(ctx_);
244 duk_get_global_string(ctx_, "y"); 242 duk_get_global_string(ctx_, "y");