annotate tests/libclient/js-sprite/main.cpp @ 36:9af360f34c7d

Misc: use raw duktape API
author David Demelier <markand@malikania.fr>
date Wed, 10 Aug 2016 14:30:51 +0200
parents d4f5f7231b84
children a47a4477f347
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test Sprite (JavaScript binding)
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2016 Malikania Authors
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <chrono>
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <thread>
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <gtest/gtest.h>
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
24 #include <malikania/js-client-resources-loader.hpp>
33
d4f5f7231b84 Misc: switch to .hpp, dos2unix everything while here, #478
David Demelier <markand@malikania.fr>
parents: 30
diff changeset
25 #include <malikania/js-image.hpp>
d4f5f7231b84 Misc: switch to .hpp, dos2unix everything while here, #478
David Demelier <markand@malikania.fr>
parents: 30
diff changeset
26 #include <malikania/js-sprite.hpp>
d4f5f7231b84 Misc: switch to .hpp, dos2unix everything while here, #478
David Demelier <markand@malikania.fr>
parents: 30
diff changeset
27 #include <malikania/js-window.hpp>
d4f5f7231b84 Misc: switch to .hpp, dos2unix everything while here, #478
David Demelier <markand@malikania.fr>
parents: 30
diff changeset
28 #include <malikania/resources-locator.hpp>
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 using namespace malikania;
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 using namespace std::chrono_literals;
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 class TestSprite : public testing::Test {
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 protected:
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
36 ResourcesLocatorDirectory m_locator;
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
37 ClientResourcesLoader m_loader;
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
38 UniqueContext m_ctx;
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 public:
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
41 TestSprite()
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
42 : m_locator(SOURCE_DIRECTORY "/resources")
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
43 , m_loader(m_locator)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
44 {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
45 duk_push_object(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
46 duk_put_global_string(m_ctx, "Malikania");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
47 dukx_load_image(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
48 dukx_load_sprite(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
49 dukx_load_window(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
50 dukx_put_client_loader(m_ctx, &m_loader);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
51 }
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 };
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
54 TEST_F(TestSprite, cell)
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
55 {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
56 try {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
57 auto ret = duk_peval_string(m_ctx,
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
58 "s = new Malikania.Sprite('sprites/margins.json');"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
59 "w = s.cell.width;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
60 "h = s.cell.height;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
61 );
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
62
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
63 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
64 throw dukx_exception(m_ctx, -1);
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
65
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
66 duk_get_global_string(m_ctx, "w");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
67 ASSERT_EQ(32U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
68 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
69 duk_get_global_string(m_ctx, "h");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
70 ASSERT_EQ(32U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
71 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
72 } catch (const std::exception &ex) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
73 FAIL() << ex.what();
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
74 }
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
75 }
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
76
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
77 TEST_F(TestSprite, columns)
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
78 {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
79 try {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
80 auto ret = duk_peval_string(m_ctx,
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
81 "s = new Malikania.Sprite('sprites/margins.json');"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
82 "n = s.columns;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
83 );
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
84
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
85 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
86 throw dukx_exception(m_ctx, -1);
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
87
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
88 duk_get_global_string(m_ctx, "n");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
89 ASSERT_EQ(4U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
90 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
91 } catch (const std::exception &ex) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
92 FAIL() << ex.what();
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
93 }
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
94 }
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
95
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
96 TEST_F(TestSprite, margins)
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
97 {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
98 try {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
99 auto ret = duk_peval_string(m_ctx,
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
100 "s = new Malikania.Sprite('sprites/margins.json');"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
101 "w = s.margins.width;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
102 "h = s.margins.height;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
103 );
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
104
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
105 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
106 throw dukx_exception(m_ctx, -1);
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
107
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
108 duk_get_global_string(m_ctx, "w");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
109 ASSERT_EQ(4U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
110 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
111 duk_get_global_string(m_ctx, "h");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
112 ASSERT_EQ(6U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
113 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
114 } catch (const std::exception &ex) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
115 FAIL() << ex.what();
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
116 }
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
117 }
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
118
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
119 TEST_F(TestSprite, rows)
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
120 {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
121 try {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
122 auto ret = duk_peval_string(m_ctx,
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
123 "s = new Malikania.Sprite('sprites/margins.json');"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
124 "n = s.rows;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
125 );
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
126
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
127 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
128 throw dukx_exception(m_ctx, -1);
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
129
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
130 duk_get_global_string(m_ctx, "n");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
131 ASSERT_EQ(3U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
132 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
133 } catch (const std::exception &ex) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
134 FAIL() << ex.what();
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
135 }
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
136 }
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
137
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
138 TEST_F(TestSprite, space)
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
139 {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
140 try {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
141 auto ret = duk_peval_string(m_ctx,
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
142 "s = new Malikania.Sprite('sprites/margins.json');"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
143 "w = s.space.width;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
144 "h = s.space.height;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
145 );
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
146
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
147 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
148 throw dukx_exception(m_ctx, -1);
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
149
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
150 duk_get_global_string(m_ctx, "w");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
151 ASSERT_EQ(2U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
152 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
153 duk_get_global_string(m_ctx, "h");
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
154 ASSERT_EQ(3U, duk_to_uint(m_ctx, -1));
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
155 duk_pop(m_ctx);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
156 } catch (const std::exception &ex) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
157 FAIL() << ex.what();
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
158 }
25
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
159 }
dc47ce56ce36 Client: add properties for Malikania.Sprite, #461
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
160
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 TEST_F(TestSprite, basic)
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 {
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
163 try {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
164 auto ret = duk_peval_string(m_ctx,
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
165 "w = new Malikania.Window();"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
166 "s = new Malikania.Sprite('sprites/margins.json');"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
167 "c = 0;"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
168 );
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
170 if (ret != 0)
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
171 throw dukx_exception(m_ctx, -1);
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
173 for (unsigned c = 0; c < 12; ++c) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
174 auto ret = duk_peval_string(m_ctx,
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
175 "w.setDrawingColor('lightskyblue');"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
176 "w.clear();"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
177 "s.draw(w, c++, { x: 320 - 16, y: 240 - 16 });"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
178 "w.present();"
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
179 );
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
181 if (ret != 0) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
182 throw dukx_exception(m_ctx, -1);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
183 }
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
184
36
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
185 std::this_thread::sleep_for(1s);
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
186 }
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
187 } catch (const std::exception &ex) {
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
188 FAIL() << ex.what();
9af360f34c7d Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
189 }
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 }
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
191
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 int main(int argc, char **argv)
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 {
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
194 testing::InitGoogleTest(&argc, argv);
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
195
30
a1e80d991968 Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
196 return RUN_ALL_TESTS();
21
a087bc11ba04 Client: add JavaScript bindings for Sprite, #461
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 }