annotate tests/libcommon/js-size/main.cpp @ 182:3107ce017c3a

Misc: switch back to SDL Qt Quick and QML was an exciting experiment but it's definitely not enough flexible and easy to use for game development. Using SDL2 will let us focusing on our own drawing functions without any kind of overhead. While here, start massive cleanup.
author David Demelier <markand@malikania.fr>
date Fri, 19 Oct 2018 20:18:19 +0200
parents
children eaa7f85bfc22
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test Size (JavaScript binding)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define BOOST_TEST_MODULE "Javascript Size"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <boost/test/unit_test.hpp>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <malikania/js_size.hpp>
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 namespace mlk {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 namespace {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 class test_size {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 protected:
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 dukx_context m_ctx;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 public:
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 test_size()
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 duk_push_object(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 duk_put_global_string(m_ctx, "Malikania");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 dukx_load_size(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 };
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 BOOST_FIXTURE_TEST_SUITE(test_size_suite, test_size)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 /*
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 * Valid constructors.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 * ------------------------------------------------------------------
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 */
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 BOOST_AUTO_TEST_SUITE(constructors)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 BOOST_AUTO_TEST_CASE(constructor_default)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 "s = Malikania.Size();"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 "w = s.width;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 "h = s.height;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 duk_get_global_string(m_ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 BOOST_REQUIRE_EQUAL(0U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 duk_get_global_string(m_ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 BOOST_REQUIRE_EQUAL(0U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 BOOST_AUTO_TEST_CASE(constructor_2_args)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 "s = Malikania.Size(100, 200);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 "w = s.width;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 "h = s.height;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 duk_get_global_string(m_ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 BOOST_REQUIRE_EQUAL(100U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 duk_get_global_string(m_ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 BOOST_REQUIRE_EQUAL(200U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 BOOST_AUTO_TEST_CASE(constructor_object)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 "s = Malikania.Size({ width: 100, height: 200 });"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 "w = s.width;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 "h = s.height;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
104
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
107
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 duk_get_global_string(m_ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 BOOST_REQUIRE_EQUAL(100U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 duk_get_global_string(m_ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 BOOST_REQUIRE_EQUAL(200U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 BOOST_AUTO_TEST_CASE(constructor_new)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 "s = new Malikania.Size({ width: 100, height: 200 });"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 "w = s.width;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 "h = s.height;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 duk_get_global_string(m_ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 BOOST_REQUIRE_EQUAL(100U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 duk_get_global_string(m_ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 BOOST_REQUIRE_EQUAL(200U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
141
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 BOOST_AUTO_TEST_SUITE_END()
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 /*
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 * Invalid constructors.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 * ------------------------------------------------------------------
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 */
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 BOOST_AUTO_TEST_SUITE(invalid_constructors)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
150
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 BOOST_AUTO_TEST_CASE(constructor_arg_1)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 "try {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 " Malikania.Size(null);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 "} catch (e) {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 " name = e.name;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 " correct = (e instanceof TypeError);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 "}"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 duk_get_global_string(m_ctx, "name");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 BOOST_REQUIRE_EQUAL("TypeError", duk_to_string(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 duk_get_global_string(m_ctx, "correct");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 BOOST_REQUIRE(duk_to_boolean(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 BOOST_AUTO_TEST_CASE(constructor_range_1)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 "try {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 " Malikania.Size(-1, 200);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 "} catch (e) {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 " name = e.name;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 " correct = (e instanceof RangeError);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 "}"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
191
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 duk_get_global_string(m_ctx, "name");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 BOOST_REQUIRE_EQUAL("RangeError", duk_to_string(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 duk_get_global_string(m_ctx, "correct");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 BOOST_REQUIRE(duk_to_boolean(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
202
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 BOOST_AUTO_TEST_CASE(constructor_range_2)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 "try {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 " Malikania.Size(100, -1);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 "} catch (e) {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 " name = e.name;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 " correct = (e instanceof RangeError);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 "}"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
214
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
217
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 duk_get_global_string(m_ctx, "name");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 BOOST_REQUIRE_EQUAL("RangeError", duk_to_string(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 duk_get_global_string(m_ctx, "correct");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 BOOST_REQUIRE(duk_to_boolean(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 BOOST_AUTO_TEST_CASE(constructor_range_3)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 "try {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 " Malikania.Size({ width: -1, height: 200 });"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 "} catch (e) {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 " name = e.name;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 " correct = (e instanceof RangeError);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 "}"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
240
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
243
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 duk_get_global_string(m_ctx, "name");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 BOOST_REQUIRE_EQUAL("RangeError", duk_to_string(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 duk_get_global_string(m_ctx, "correct");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 BOOST_REQUIRE(duk_to_boolean(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
254
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 BOOST_AUTO_TEST_CASE(constructor_range_4)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 "try {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 " Malikania.Size({ width: 100, height: -1 });"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 "} catch (e) {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 " name = e.name;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 " correct = (e instanceof RangeError);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 "}"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
266
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
267 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
269
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 duk_get_global_string(m_ctx, "name");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 BOOST_REQUIRE_EQUAL("RangeError", duk_to_string(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 duk_get_global_string(m_ctx, "correct");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 BOOST_REQUIRE(duk_to_boolean(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
280
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
281 BOOST_AUTO_TEST_SUITE_END()
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
282
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 /*
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 * Require.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 * ------------------------------------------------------------------
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 */
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
287
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
288 BOOST_AUTO_TEST_SUITE(require)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
289
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 BOOST_AUTO_TEST_CASE(success)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 duk_push_c_function(m_ctx, [] (auto ctx) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 const auto size = dukx_require_size(ctx, 0);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
295
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 duk_push_uint(ctx, size.width);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 duk_put_global_string(ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 duk_push_uint(ctx, size.height);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 duk_put_global_string(ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
300
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 return 0;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 }, 1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 duk_put_global_string(m_ctx, "build");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
304
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 const auto ret = duk_peval_string(m_ctx, "build({ width: 100, height: 200 });");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
306
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
309
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 duk_get_global_string(m_ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
311 BOOST_REQUIRE_EQUAL(100U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 duk_get_global_string(m_ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 BOOST_REQUIRE_EQUAL(200U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
320
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 BOOST_AUTO_TEST_CASE(fail)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 duk_push_c_function(m_ctx, [] (auto ctx) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 dukx_require_size(ctx, 0);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
326
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 return 0;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 }, 1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 duk_put_global_string(m_ctx, "build");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
330
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
331 const auto ret = duk_peval_string(m_ctx,
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
332 "try {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
333 " build({});"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
334 "} catch (e) {"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
335 " name = e.name;"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
336 " correct = (e instanceof Error);"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 "}"
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
338 );
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
339
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
341 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
342
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 duk_get_global_string(m_ctx, "name");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 BOOST_REQUIRE_EQUAL("Error", duk_to_string(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
345 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
346 duk_get_global_string(m_ctx, "correct");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
347 BOOST_REQUIRE(duk_to_boolean(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
350 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
352 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
353
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
354 BOOST_AUTO_TEST_SUITE_END()
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
355
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
356 /*
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
357 * Get.
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
358 * ------------------------------------------------------------------
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
359 */
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
360
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 BOOST_AUTO_TEST_SUITE(get)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
362
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
363 BOOST_AUTO_TEST_CASE(adjust_all)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 try {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
366 duk_push_c_function(m_ctx, [] (auto ctx) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 const auto size = dukx_get_size(ctx, 0);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
368
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
369 duk_push_uint(ctx, size.width);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
370 duk_put_global_string(ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
371 duk_push_uint(ctx, size.height);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
372 duk_put_global_string(ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
373
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
374 return 0;
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
375 }, 1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
376 duk_put_global_string(m_ctx, "build");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
377
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
378 const auto ret = duk_peval_string(m_ctx, "build({});");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
379
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
380 if (ret != 0)
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
381 throw dukx_get_exception(m_ctx, -1);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
382
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
383 duk_get_global_string(m_ctx, "w");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
384 BOOST_REQUIRE_EQUAL(0U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
385 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
386 duk_get_global_string(m_ctx, "h");
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
387 BOOST_REQUIRE_EQUAL(0U, duk_to_uint(m_ctx, -1));
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
388 duk_pop(m_ctx);
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
389 } catch (const std::exception &ex) {
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
390 BOOST_FAIL(ex.what());
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
391 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
392 }
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
393
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
394 BOOST_AUTO_TEST_SUITE_END()
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
395
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
396 BOOST_AUTO_TEST_SUITE_END()
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
397
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
398 } // !namespace
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
399
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
diff changeset
400 } // !mlk