annotate tests/libclient/js-color/main.cpp @ 42:a47a4477f347

Misc: new style, closes #578
author David Demelier <markand@malikania.fr>
date Tue, 29 Nov 2016 21:21:36 +0100
parents 9af360f34c7d
children fabbe1759cec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test Color (JavaScript binding)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2016 Malikania Authors
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <gtest/gtest.h>
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
42
a47a4477f347 Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
21 #include <malikania/js_color.hpp>
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 using namespace malikania;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 class TestColor : public testing::Test {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 protected:
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
27 UniqueContext m_ctx;
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 public:
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
30 TestColor()
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
31 {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
32 duk_push_object(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
33 duk_put_global_string(m_ctx, "Malikania");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
34 dukx_load_color(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
35 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
37 int component(const char *name)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
38 {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
39 duk_get_global_string(m_ctx, name);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
40 auto value = duk_require_int(m_ctx, -1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
41 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
42
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
43 return value;
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
44 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 };
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 * Valid constructors
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 * ------------------------------------------------------------------
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 TEST_F(TestColor, ConstructorNoArgs)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
54 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
55 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
56 "c = Malikania.Color();"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
57 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
58 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
59 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
60 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
61 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
63 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
64 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
66 ASSERT_EQ(0, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
67 ASSERT_EQ(0, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
68 ASSERT_EQ(0, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
69 ASSERT_EQ(255, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
70 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
71 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
72 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 TEST_F(TestColor, ConstructorString)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
77 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
78 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
79 "c = Malikania.Color('white');"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
80 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
81 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
82 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
83 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
84 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
86 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
87 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
89 ASSERT_EQ(255, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
90 ASSERT_EQ(255, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
91 ASSERT_EQ(255, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
92 ASSERT_EQ(255, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
93 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
94 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
95 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 TEST_F(TestColor, ConstructorStringRgb)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
100 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
101 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
102 "c = Malikania.Color('#0000ff');"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
103 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
104 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
105 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
106 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
107 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
109 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
110 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
112 ASSERT_EQ(0, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
113 ASSERT_EQ(0, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
114 ASSERT_EQ(255, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
115 ASSERT_EQ(255, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
116 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
117 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
118 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 TEST_F(TestColor, Constructor3Args)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
123 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
124 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
125 "c = Malikania.Color(10, 20, 30);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
126 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
127 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
128 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
129 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
130 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
132 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
133 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
135 ASSERT_EQ(10, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
136 ASSERT_EQ(20, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
137 ASSERT_EQ(30, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
138 ASSERT_EQ(255, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
139 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
140 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
141 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 TEST_F(TestColor, Constructor4Args)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
146 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
147 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
148 "c = Malikania.Color(10, 20, 30, 40);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
149 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
150 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
151 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
152 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
153 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
155 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
156 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
157
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
158 ASSERT_EQ(10, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
159 ASSERT_EQ(20, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
160 ASSERT_EQ(30, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
161 ASSERT_EQ(40, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
162 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
163 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
164 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
166
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 TEST_F(TestColor, ConstructorObjectNoAlpha)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
169 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
170 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
171 "c = Malikania.Color({ red: 10, green: 20, blue: 30 });"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
172 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
173 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
174 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
175 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
176 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
178 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
179 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
181 ASSERT_EQ(10, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
182 ASSERT_EQ(20, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
183 ASSERT_EQ(30, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
184 ASSERT_EQ(255, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
185 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
186 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
187 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
189
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 TEST_F(TestColor, ConstructorObjectAlpha)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
192 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
193 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
194 "c = Malikania.Color({ red: 10, green: 20, blue: 30, alpha: 40 });"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
195 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
196 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
197 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
198 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
199 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
200
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
201 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
202 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
203
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
204 ASSERT_EQ(10, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
205 ASSERT_EQ(20, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
206 ASSERT_EQ(30, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
207 ASSERT_EQ(40, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
208 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
209 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
210 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 TEST_F(TestColor, ConstructorNew)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
215 /*
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
216 * Just one test, function parse the same way, only 'this' or a new object is returned.
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
217 */
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
218 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
219 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
220 "c = new Malikania.Color({ red: 10, green: 20, blue: 30, alpha: 40 });"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
221 "r = c.red;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
222 "g = c.green;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
223 "b = c.blue;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
224 "a = c.alpha;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
225 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
226
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
227 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
228 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
229
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
230 ASSERT_EQ(10, component("r"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
231 ASSERT_EQ(20, component("g"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
232 ASSERT_EQ(30, component("b"));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
233 ASSERT_EQ(40, component("a"));
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
234 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
235 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
236 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
238
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 * Valid constructors
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 * ------------------------------------------------------------------
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
243
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 TEST_F(TestColor, InvalidConstructorArg1)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
246 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
247 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
248 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
249 " Malikania.Color(null);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
250 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
251 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
252 " correct = (e instanceof TypeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
253 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
254 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
255
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
256 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
257 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
258
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
259 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
260 ASSERT_STREQ("TypeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
261 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
262 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
263 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
264 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
265 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
266 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
267 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
269
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 TEST_F(TestColor, InvalidConstructorArg2)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
272 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
273 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
274 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
275 " Malikania.Color(10, null, 30);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
276 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
277 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
278 " correct = (e instanceof TypeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
279 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
280 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
281
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
282 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
283 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
284
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
285 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
286 ASSERT_STREQ("TypeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
287 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
288 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
289 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
290 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
291 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
292 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
293 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
295
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 TEST_F(TestColor, InvalidConstructorRange1)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
298 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
299 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
300 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
301 " Malikania.Color(-1, 20, 30);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
302 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
303 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
304 " correct = (e instanceof RangeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
305 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
306 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
307
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
308 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
309 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
310
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
311 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
312 ASSERT_STREQ("RangeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
313 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
314 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
315 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
316 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
317 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
318 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
319 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
321
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 TEST_F(TestColor, InvalidConstructorRange2)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
324 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
325 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
326 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
327 " Malikania.Color(10, 20, 256);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
328 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
329 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
330 " correct = (e instanceof RangeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
331 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
332 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
333
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
334 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
335 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
336
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
337 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
338 ASSERT_STREQ("RangeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
339 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
340 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
341 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
342 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
343 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
344 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
345 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
346 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
347
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 TEST_F(TestColor, InvalidConstructorRange3)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
350 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
351 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
352 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
353 " Malikania.Color(10, 20, 30, 800);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
354 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
355 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
356 " correct = (e instanceof RangeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
357 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
358 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
359
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
360 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
361 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
362
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
363 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
364 ASSERT_STREQ("RangeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
365 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
366 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
367 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
368 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
369 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
370 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
371 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
372 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
373
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
374 TEST_F(TestColor, InvalidConstructorRange4)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
375 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
376 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
377 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
378 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
379 " Malikania.Color({ red: -1, green: 20, blue: 30 });"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
380 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
381 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
382 " correct = (e instanceof RangeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
383 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
384 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
385
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
386 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
387 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
388
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
389 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
390 ASSERT_STREQ("RangeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
391 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
392 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
393 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
394 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
395 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
396 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
397 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
398 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
399
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
400 TEST_F(TestColor, InvalidConstructorRange5)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
401 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
402 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
403 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
404 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
405 " Malikania.Color({ red: 10, green: 20, blue: 30, alpha: 800 });"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
406 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
407 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
408 " correct = (e instanceof RangeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
409 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
410 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
411
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
412 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
413 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
414
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
415 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
416 ASSERT_STREQ("RangeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
417 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
418 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
419 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
420 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
421 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
422 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
423 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
424 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
425
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
426 TEST_F(TestColor, InvalidConstructorStringUnknown)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
427 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
428 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
429 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
430 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
431 " Malikania.Color('does not exist');"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
432 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
433 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
434 " correct = (e instanceof Error);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
435 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
436 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
437
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
438 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
439 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
440
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
441 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
442 ASSERT_STREQ("Error", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
443 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
444 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
445 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
446 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
447 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
448 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
449 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
450 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
451
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
452 TEST_F(TestColor, InvalidConstructorStringRgb)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
453 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
454 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
455 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
456 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
457 " Malikania.Color('#ghijkl');"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
458 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
459 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
460 " correct = (e instanceof Error);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
461 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
462 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
463
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
464 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
465 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
466
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
467 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
468 ASSERT_STREQ("Error", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
469 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
470 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
471 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
472 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
473 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
474 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
475 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
476 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
477
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
478 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
479 * Require.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
480 * ------------------------------------------------------------------
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
481 *
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
482 * TypeTraits<Color>::require expect to have a valid color, it raises an error for any invalid component. Only alpha
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
483 * can be ommitted but if it is present and incorrect, an exception is also raised.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
484 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
485
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
486 TEST_F(TestColor, requireSuccess)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
487 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
488 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
489 duk_push_c_function(m_ctx, [] (auto ctx) {
42
a47a4477f347 Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
490 auto color = dukx_require_color(ctx, 0);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
491
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
492 duk_push_uint(ctx, color.red());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
493 duk_put_global_string(ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
494 duk_push_uint(ctx, color.green());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
495 duk_put_global_string(ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
496 duk_push_uint(ctx, color.blue());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
497 duk_put_global_string(ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
498 duk_push_uint(ctx, color.alpha());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
499 duk_put_global_string(ctx, "a");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
500
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
501 return 0;
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
502 }, 1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
503 duk_put_global_string(m_ctx, "draw");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
504
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
505 auto ret = duk_peval_string(m_ctx, "draw('#ff0000');");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
506
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
507 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
508 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
509
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
510 duk_get_global_string(m_ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
511 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
512 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
513 duk_get_global_string(m_ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
514 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
515 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
516 duk_get_global_string(m_ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
517 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
518 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
519 duk_get_global_string(m_ctx, "a");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
520 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
521 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
522 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
523 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
524 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
525 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
526
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
527 TEST_F(TestColor, requireFail)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
528 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
529 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
530 duk_push_c_function(m_ctx, [] (auto ctx) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
531 dukx_require_color(ctx, 0);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
532
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
533 return 0;
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
534 }, 1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
535 duk_put_global_string(m_ctx, "draw");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
536
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
537 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
538 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
539 " draw('#ghijkl');"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
540 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
541 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
542 " correct = (e instanceof Error);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
543 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
544 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
545
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
546 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
547 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
548
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
549 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
550 ASSERT_STREQ("Error", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
551 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
552 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
553 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
554 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
555 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
556 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
557 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
558 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
559
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
560 TEST_F(TestColor, requireFailAlpha)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
561 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
562 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
563 duk_push_c_function(m_ctx, [] (auto ctx) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
564 dukx_require_color(ctx, 0);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
565
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
566 return 0;
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
567 }, 1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
568 duk_put_global_string(m_ctx, "draw");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
569
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
570 auto ret = duk_peval_string(m_ctx,
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
571 "try {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
572 " draw({ red: 10, green: 20, blue: 30, alpha: 800 });"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
573 "} catch (e) {"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
574 " name = e.name;"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
575 " correct = (e instanceof RangeError);"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
576 "}"
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
577 );
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
578
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
579 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
580 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
581
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
582 duk_get_global_string(m_ctx, "name");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
583 ASSERT_STREQ("RangeError", duk_to_string(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
584 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
585 duk_get_global_string(m_ctx, "correct");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
586 ASSERT_TRUE(duk_to_boolean(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
587 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
588 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
589 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
590 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
591 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
592
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
593 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
594 * Get.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
595 * ------------------------------------------------------------------
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
596 *
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
597 * TypeTraits<Color>::get readjust any invalid values.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
598 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
599
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
600 TEST_F(TestColor, getNormal)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
601 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
602 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
603 duk_push_c_function(m_ctx, [] (auto ctx) {
42
a47a4477f347 Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
604 auto color = dukx_get_color(ctx, 0);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
605
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
606 duk_push_uint(ctx, color.red());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
607 duk_put_global_string(ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
608 duk_push_uint(ctx, color.green());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
609 duk_put_global_string(ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
610 duk_push_uint(ctx, color.blue());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
611 duk_put_global_string(ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
612 duk_push_uint(ctx, color.alpha());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
613 duk_put_global_string(ctx, "a");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
614
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
615 return 0;
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
616 }, 1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
617 duk_put_global_string(m_ctx, "draw");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
618
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
619 auto ret = duk_peval_string(m_ctx, "draw('#ff0000');");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
620
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
621 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
622 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
623
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
624 duk_get_global_string(m_ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
625 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
626 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
627 duk_get_global_string(m_ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
628 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
629 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
630 duk_get_global_string(m_ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
631 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
632 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
633 duk_get_global_string(m_ctx, "a");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
634 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
635 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
636 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
637 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
638 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
639 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
640
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
641 TEST_F(TestColor, getAdjustRgb)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
642 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
643 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
644 duk_push_c_function(m_ctx, [] (auto ctx) {
42
a47a4477f347 Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
645 auto color = dukx_get_color(ctx, 0);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
646
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
647 duk_push_uint(ctx, color.red());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
648 duk_put_global_string(ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
649 duk_push_uint(ctx, color.green());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
650 duk_put_global_string(ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
651 duk_push_uint(ctx, color.blue());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
652 duk_put_global_string(ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
653 duk_push_uint(ctx, color.alpha());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
654 duk_put_global_string(ctx, "a");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
655
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
656 return 0;
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
657 }, 1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
658 duk_put_global_string(m_ctx, "draw");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
659
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
660 auto ret = duk_peval_string(m_ctx, "draw('#ghijkl');");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
661
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
662 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
663 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
664
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
665 duk_get_global_string(m_ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
666 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
667 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
668 duk_get_global_string(m_ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
669 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
670 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
671 duk_get_global_string(m_ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
672 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
673 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
674 duk_get_global_string(m_ctx, "a");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
675 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
676 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
677 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
678 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
679 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
680 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
681
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
682 TEST_F(TestColor, getAdjustAll)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
683 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
684 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
685 duk_push_c_function(m_ctx, [] (auto ctx) {
42
a47a4477f347 Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
686 auto color = dukx_get_color(ctx, 0);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
687
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
688 duk_push_uint(ctx, color.red());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
689 duk_put_global_string(ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
690 duk_push_uint(ctx, color.green());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
691 duk_put_global_string(ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
692 duk_push_uint(ctx, color.blue());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
693 duk_put_global_string(ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
694 duk_push_uint(ctx, color.alpha());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
695 duk_put_global_string(ctx, "a");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
696
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
697 return 0;
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
698 }, 1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
699 duk_put_global_string(m_ctx, "draw");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
700
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
701 auto ret = duk_peval_string(m_ctx, "draw({ red: -1, green: 256, blue: 100, alpha: 800 });");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
702
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
703 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
704 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
705
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
706 duk_get_global_string(m_ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
707 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
708 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
709 duk_get_global_string(m_ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
710 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
711 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
712 duk_get_global_string(m_ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
713 ASSERT_EQ(100U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
714 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
715 duk_get_global_string(m_ctx, "a");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
716 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
717 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
718 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
719 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
720 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
721 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
722
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
723 TEST_F(TestColor, getSomethingElse)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
724 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
725 try {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
726 duk_push_c_function(m_ctx, [] (auto ctx) {
42
a47a4477f347 Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents: 36
diff changeset
727 auto color = dukx_get_color(ctx, 0);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
728
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
729 duk_push_uint(ctx, color.red());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
730 duk_put_global_string(ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
731 duk_push_uint(ctx, color.green());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
732 duk_put_global_string(ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
733 duk_push_uint(ctx, color.blue());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
734 duk_put_global_string(ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
735 duk_push_uint(ctx, color.alpha());
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
736 duk_put_global_string(ctx, "a");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
737
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
738 return 0;
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
739 }, 1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
740 duk_put_global_string(m_ctx, "draw");
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
741
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
742 auto ret = duk_peval_string(m_ctx, "draw(null);");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
743
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
744 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
745 throw dukx_exception(m_ctx, -1);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
746
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
747 duk_get_global_string(m_ctx, "r");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
748 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
749 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
750 duk_get_global_string(m_ctx, "g");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
751 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
752 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
753 duk_get_global_string(m_ctx, "b");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
754 ASSERT_EQ(0U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
755 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
756 duk_get_global_string(m_ctx, "a");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
757 ASSERT_EQ(255U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
758 duk_pop(m_ctx);
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
759 } catch (const std::exception &ex) {
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
760 FAIL() << ex.what();
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
761 }
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
762 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
763
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
764 int main(int argc, char **argv)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
765 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
766 testing::InitGoogleTest(&argc, argv);
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
767
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
768 return RUN_ALL_TESTS();
12
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
769 }