annotate tests/libclient/js-color/main.cpp @ 12:0c62e0af6af7

Client: add JavaScript bindings for Color, #445
author David Demelier <markand@malikania.fr>
date Fri, 01 Apr 2016 13:45:45 +0200
parents
children 0a1adf7dcca0
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
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <malikania/js-color.h>
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:
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 duk::Context m_ctx;
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:
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 TestColor()
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 duk::putGlobal(m_ctx, "Malikania", duk::Object());
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 loadMalikaniaColor(m_ctx);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 };
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 * Valid constructors
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * ------------------------------------------------------------------
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 TEST_F(TestColor, ConstructorNoArgs)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 "c = Malikania.Color();"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 TEST_F(TestColor, ConstructorString)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 "c = Malikania.Color('white');"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 TEST_F(TestColor, ConstructorStringRgb)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 "c = Malikania.Color('#0000ff');"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 TEST_F(TestColor, Constructor3Args)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 "c = Malikania.Color(10, 20, 30);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
125
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 ASSERT_EQ(10, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 ASSERT_EQ(20, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 ASSERT_EQ(30, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 TEST_F(TestColor, Constructor4Args)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 "c = Malikania.Color(10, 20, 30, 40);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
153
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 ASSERT_EQ(10, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 ASSERT_EQ(20, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 ASSERT_EQ(30, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 ASSERT_EQ(40, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 TEST_F(TestColor, ConstructorObjectNoAlpha)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 "c = Malikania.Color({ red: 10, green: 20, blue: 30 });"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 ASSERT_EQ(10, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 ASSERT_EQ(20, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 ASSERT_EQ(30, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 TEST_F(TestColor, ConstructorObjectAlpha)
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 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 "c = Malikania.Color({ red: 10, green: 20, blue: 30, alpha: 40 });"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
197
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 ASSERT_EQ(10, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 ASSERT_EQ(20, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 ASSERT_EQ(30, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 ASSERT_EQ(40, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
210
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 TEST_F(TestColor, ConstructorNew)
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 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 * Just one test, function parse the same way, only 'this' or a new object is returned.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 "c = new Malikania.Color({ red: 10, green: 20, blue: 30, alpha: 40 });"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 "r = c.red;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 "g = c.green;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 "b = c.blue;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 "a = c.alpha;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 ASSERT_EQ(10, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 ASSERT_EQ(20, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 ASSERT_EQ(30, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 ASSERT_EQ(40, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 }
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 * Valid constructors
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 * ------------------------------------------------------------------
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 TEST_F(TestColor, InvalidConstructorArg1)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 " Malikania.Color(null);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 " correct = (e instanceof TypeError);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
254
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
258
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 ASSERT_EQ("TypeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
265
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 TEST_F(TestColor, InvalidConstructorArg2)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
267 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 " Malikania.Color(10, null, 30);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 " correct = (e instanceof TypeError);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
277
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
281
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 ASSERT_EQ("TypeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
288
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 TEST_F(TestColor, InvalidConstructorRange1)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 " Malikania.Color(-1, 20, 30);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 " correct = (e instanceof RangeError);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
300
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
304
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 ASSERT_EQ("RangeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
311
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 TEST_F(TestColor, InvalidConstructorRange2)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 " Malikania.Color(10, 20, 256);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 " correct = (e instanceof RangeError);"
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 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
323
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
327
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 ASSERT_EQ("RangeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
330 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
331 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
332 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
333 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
334
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
335 TEST_F(TestColor, InvalidConstructorRange3)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
336 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
338 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
339 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 " Malikania.Color(10, 20, 30, 800);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
341 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
342 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 " correct = (e instanceof RangeError);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
345 );
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 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
350
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 ASSERT_EQ("RangeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
352 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
353 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
354 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
355 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
356 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
357
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
358 TEST_F(TestColor, InvalidConstructorRange4)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
359 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
360 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
362 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
363 " Malikania.Color({ red: -1, green: 20, blue: 30 });"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
366 " correct = (e instanceof RangeError);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
368 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
369
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
370 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
371 throw duk::error(m_ctx, -1);
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 ASSERT_EQ("RangeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
375 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
376 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
377 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
378 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
379 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
380
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
381 TEST_F(TestColor, InvalidConstructorRange5)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
382 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
383 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
384 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
385 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
386 " Malikania.Color({ red: 10, green: 20, blue: 30, alpha: 800 });"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
387 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
388 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
389 " correct = (e instanceof RangeError);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
390 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
391 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
392
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
393 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
394 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
395 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
396
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
397 ASSERT_EQ("RangeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
398 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
399 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
400 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
401 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
402 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
403
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
404 TEST_F(TestColor, InvalidConstructorStringUnknown)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
405 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
406 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
407 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
408 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
409 " Malikania.Color('does not exist');"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
410 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
411 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
412 " correct = (e instanceof Error);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
413 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
414 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
415
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
416 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
417 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
418 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
419
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
420 ASSERT_EQ("Error", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
421 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
422 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
423 FAIL() << ex.what();
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
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
427 TEST_F(TestColor, InvalidConstructorStringRgb)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
428 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
429 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
430 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
431 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
432 " Malikania.Color('#ghijkl');"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
433 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
434 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
435 " correct = (e instanceof Error);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
436 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
437 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
438
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
439 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
440 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
441 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
442
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
443 ASSERT_EQ("Error", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
444 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
445 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
446 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
447 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
448 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
449
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 * Require.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
452 * ------------------------------------------------------------------
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
453 *
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
454 * 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
455 * 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
456 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
457
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
458 TEST_F(TestColor, requireSuccess)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
459 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
460 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
461 duk::putGlobal(m_ctx, "draw", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
462 Color color = duk::require<Color>(ctx, 0);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
463
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
464 duk::putGlobal(ctx, "r", static_cast<int>(color.red()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
465 duk::putGlobal(ctx, "g", static_cast<int>(color.green()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
466 duk::putGlobal(ctx, "b", static_cast<int>(color.blue()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
467 duk::putGlobal(ctx, "a", static_cast<int>(color.alpha()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
468
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
469 return 0;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
470 }, 1});
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
471
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
472 auto ret = duk::pevalString(m_ctx, "draw('#ff0000');");
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
473
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
474 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
475 throw duk::error(m_ctx, -1);
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 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
479 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
480 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
481 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
482 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
483 FAIL() << ex.what();
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
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
487 TEST_F(TestColor, requireFail)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
488 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
489 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
490 duk::putGlobal(m_ctx, "draw", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
491 duk::require<Color>(ctx, 0);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
492
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
493 return 0;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
494 }, 1});
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
495
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
496 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
497 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
498 " draw('#ghijkl');"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
499 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
500 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
501 " correct = (e instanceof Error);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
502 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
503 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
504
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
505 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
506 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
507 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
508
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
509 ASSERT_EQ("Error", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
510 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
511 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
512 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
513 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
514 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
515
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
516 TEST_F(TestColor, requireFailAlpha)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
517 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
518 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
519 duk::putGlobal(m_ctx, "draw", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
520 duk::require<Color>(ctx, 0);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
521
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
522 return 0;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
523 }, 1});
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
524
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
525 auto ret = duk::pevalString(m_ctx,
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
526 "try {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
527 " draw({ red: 10, green: 20, blue: 30, alpha: 800 });"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
528 "} catch (e) {"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
529 " name = e.name;"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
530 " correct = (e instanceof RangeError);"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
531 "}"
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
532 );
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
533
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
534 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
535 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
536 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
537
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
538 ASSERT_EQ("RangeError", duk::getGlobal<std::string>(m_ctx, "name"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
539 ASSERT_TRUE(duk::getGlobal<bool>(m_ctx, "correct"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
540 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
541 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
542 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
543 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
544
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
545 /*
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
546 * Get.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
547 * ------------------------------------------------------------------
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
548 *
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
549 * TypeTraits<Color>::get readjust any invalid values.
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
550 */
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
551
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
552 TEST_F(TestColor, getNormal)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
553 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
554 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
555 duk::putGlobal(m_ctx, "draw", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
556 Color color = duk::get<Color>(ctx, 0);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
557
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
558 duk::putGlobal(ctx, "r", static_cast<int>(color.red()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
559 duk::putGlobal(ctx, "g", static_cast<int>(color.green()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
560 duk::putGlobal(ctx, "b", static_cast<int>(color.blue()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
561 duk::putGlobal(ctx, "a", static_cast<int>(color.alpha()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
562
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
563 return 0;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
564 }, 1});
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
565
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
566 auto ret = duk::pevalString(m_ctx, "draw('#ff0000');");
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
567
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
568 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
569 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
570 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
571
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
572 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
573 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
574 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
575 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
576 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
577 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
578 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
579 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
580
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
581 TEST_F(TestColor, getAdjustRgb)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
582 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
583 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
584 duk::putGlobal(m_ctx, "draw", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
585 Color color = duk::get<Color>(ctx, 0);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
586
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
587 duk::putGlobal(ctx, "r", static_cast<int>(color.red()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
588 duk::putGlobal(ctx, "g", static_cast<int>(color.green()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
589 duk::putGlobal(ctx, "b", static_cast<int>(color.blue()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
590 duk::putGlobal(ctx, "a", static_cast<int>(color.alpha()));
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 return 0;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
593 }, 1});
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
594
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
595 auto ret = duk::pevalString(m_ctx, "draw('#ghijkl');");
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 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
598 throw duk::error(m_ctx, -1);
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
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
601 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
602 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
603 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
604 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
605 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
606 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
607 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
608 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
609
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
610 TEST_F(TestColor, getAdjustAll)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
611 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
612 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
613 duk::putGlobal(m_ctx, "draw", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
614 Color color = duk::get<Color>(ctx, 0);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
615
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
616 duk::putGlobal(ctx, "r", static_cast<int>(color.red()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
617 duk::putGlobal(ctx, "g", static_cast<int>(color.green()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
618 duk::putGlobal(ctx, "b", static_cast<int>(color.blue()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
619 duk::putGlobal(ctx, "a", static_cast<int>(color.alpha()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
620
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
621 return 0;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
622 }, 1});
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
623
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
624 auto ret = duk::pevalString(m_ctx, "draw({ red: -1, green: 256, blue: 100, alpha: 800 });");
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
625
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
626 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
627 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
628 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
629
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
630 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
631 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
632 ASSERT_EQ(100, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
633 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
634 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
635 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
636 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
637 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
638
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
639 TEST_F(TestColor, getSomethingElse)
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 try {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
642 duk::putGlobal(m_ctx, "draw", duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
643 Color color = duk::get<Color>(ctx, 0);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
644
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
645 duk::putGlobal(ctx, "r", static_cast<int>(color.red()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
646 duk::putGlobal(ctx, "g", static_cast<int>(color.green()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
647 duk::putGlobal(ctx, "b", static_cast<int>(color.blue()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
648 duk::putGlobal(ctx, "a", static_cast<int>(color.alpha()));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
649
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
650 return 0;
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
651 }, 1});
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
652
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
653 auto ret = duk::pevalString(m_ctx, "draw(null);");
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
654
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
655 if (ret != 0) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
656 throw duk::error(m_ctx, -1);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
657 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
658
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
659 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "r"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
660 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "g"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
661 ASSERT_EQ(0, duk::getGlobal<int>(m_ctx, "b"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
662 ASSERT_EQ(255, duk::getGlobal<int>(m_ctx, "a"));
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
663 } catch (const std::exception &ex) {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
664 FAIL() << ex.what();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
665 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
666 }
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
667
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
668 int main(int argc, char **argv)
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
669 {
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
670 testing::InitGoogleTest(&argc, argv);
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
671
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
672 return RUN_ALL_TESTS();
0c62e0af6af7 Client: add JavaScript bindings for Color, #445
David Demelier <markand@malikania.fr>
parents:
diff changeset
673 }