annotate tests/libclient/js-point/main.cpp @ 27:0a1adf7dcca0

Common: update libjs and adapt code
author David Demelier <markand@malikania.fr>
date Tue, 12 Apr 2016 13:53:11 +0200
parents 3b9ea4072263
children a1e80d991968
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test Point (JavaScript binding)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2016 Malikania Authors
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <gtest/gtest.h>
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <malikania/js-point.h>
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 using namespace malikania;
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 class TestPoint : public testing::Test {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 protected:
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 duk::Context m_ctx;
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 public:
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 TestPoint()
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 duk::putGlobal(m_ctx, "Malikania", duk::Object());
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 loadMalikaniaPoint(m_ctx);
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 };
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 /*
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 * Valid constructors
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * ------------------------------------------------------------------
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 */
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 TEST_F(TestPoint, ConstructorNoArgs)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 auto ret = duk::pevalString(m_ctx,
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 "p = Malikania.Point();"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 "x = p.x;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 "y = p.y;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 );
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
53 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "x"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "y"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 TEST_F(TestPoint, Constructor2Args)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 auto ret = duk::pevalString(m_ctx,
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 "p = Malikania.Point(-10, -20);"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 "x = p.x;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 "y = p.y;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 );
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
73 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 ASSERT_EQ(-10, duk::getGlobal<int>(m_ctx, "x"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 ASSERT_EQ(-20, duk::getGlobal<int>(m_ctx, "y"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 TEST_F(TestPoint, ConstructorObject)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 auto ret = duk::pevalString(m_ctx,
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 "p = Malikania.Point({ x: 100, y: 200 });"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 "x = p.x;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 "y = p.y;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 );
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
93 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 ASSERT_EQ(100, duk::getGlobal<int>(m_ctx, "x"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 ASSERT_EQ(200, duk::getGlobal<int>(m_ctx, "y"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 TEST_F(TestPoint, ConstructorNew)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 auto ret = duk::pevalString(m_ctx,
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 "p = new Malikania.Point({ x: 100, y: 200 });"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 "x = p.x;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 "y = p.y;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 );
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
113 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 ASSERT_EQ(100, duk::getGlobal<int>(m_ctx, "x"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 ASSERT_EQ(200, duk::getGlobal<int>(m_ctx, "y"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 /*
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 * Invalid constructors
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 * ------------------------------------------------------------------
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 */
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 TEST_F(TestPoint, InvalidConstructorArg1)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 auto ret = duk::pevalString(m_ctx,
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 "try {"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 " Malikania.Point(null);"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 "} catch (e) {"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 " name = e.name;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 " correct = (e instanceof TypeError);"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 "}"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 );
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
139
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
141 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 ASSERT_EQ("TypeError", duk::getGlobal<std::string>(m_ctx, "name"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
150
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 /*
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 * Require.
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 * ------------------------------------------------------------------
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 */
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
155
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 TEST_F(TestPoint, requireSuccess)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 duk::putGlobal(m_ctx, "build", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 Point point = duk::require<Point>(ctx, 0);
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
161
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 duk::putGlobal(ctx, "x", point.x());
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 duk::putGlobal(ctx, "y", point.y());
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
164
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 return 0;
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 }, 1});
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
167
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 auto ret = duk::pevalString(m_ctx, "build({ x: 100, y: 200 });");
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
171 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 ASSERT_EQ(100, duk::getGlobal<int>(m_ctx, "x"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 ASSERT_EQ(200, duk::getGlobal<int>(m_ctx, "y"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 TEST_F(TestPoint, requireFail)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 duk::putGlobal(m_ctx, "build", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 duk::require<Point>(ctx, 0);
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 return 0;
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 }, 1});
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
189
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 auto ret = duk::pevalString(m_ctx,
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 "try {"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 " build({});"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 "} catch (e) {"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 " name = e.name;"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 " correct = (e instanceof Error);"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 "}"
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 );
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
200 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
202
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 ASSERT_EQ("Error", duk::getGlobal<std::string>(m_ctx, "name"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
209
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 /*
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 * Get.
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 * ------------------------------------------------------------------
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 */
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
214
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 TEST_F(TestPoint, getAdjustAll)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 try {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 duk::putGlobal(m_ctx, "build", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 Point point = duk::get<Point>(ctx, 0);
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
220
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 duk::putGlobal(ctx, "x", point.x());
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 duk::putGlobal(ctx, "y", point.y());
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
223
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 return 0;
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 }, 1});
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
226
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 auto ret = duk::pevalString(m_ctx, "build({});");
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 if (ret != 0) {
27
0a1adf7dcca0 Common: update libjs and adapt code
David Demelier <markand@malikania.fr>
parents: 15
diff changeset
230 throw duk::exception(m_ctx, -1);
15
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
232
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "x"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "y"));
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 } catch (const std::exception &ex) {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 FAIL() << ex.what();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 }
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
239
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 int main(int argc, char **argv)
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 {
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 testing::InitGoogleTest(&argc, argv);
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
243
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 return RUN_ALL_TESTS();
3b9ea4072263 Client: add JavaScript bindings for Point, #458
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 }