Mercurial > malikania
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 |
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 } |