Mercurial > malikania
annotate tests/libclient/js-image/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 |
---|---|
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- test Image (JavaScript binding) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2016 Malikania Authors |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <chrono> |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <thread> |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <gtest/gtest.h> |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
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-window.hpp> |
d4f5f7231b84
Misc: switch to .hpp, dos2unix everything while here, #478
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
27 #include <malikania/resources-locator.hpp> |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 using namespace malikania; |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 using namespace std::chrono_literals; |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 class TestImage : public testing::Test { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 protected: |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
35 ResourcesLocatorDirectory m_locator; |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
36 ClientResourcesLoader m_loader; |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
37 UniqueContext m_ctx; |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 public: |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
40 TestImage() |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
41 : m_locator(SOURCE_DIRECTORY "/resources") |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
42 , m_loader(m_locator) |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
43 { |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
44 duk_push_object(m_ctx); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
45 duk_put_global_string(m_ctx, "Malikania"); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
46 dukx_load_image(m_ctx); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
47 dukx_load_window(m_ctx); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
48 dukx_put_client_loader(m_ctx, &m_loader); |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
49 } |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 }; |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
24
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
52 TEST_F(TestImage, size) |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
53 { |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
54 try { |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
55 auto ret = duk_peval_string(m_ctx, |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
56 "i = new Malikania.Image('images/smiley.png');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
57 "w = i.size.width;" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
58 "h = i.size.height;" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
59 ); |
24
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
60 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
61 if (ret != 0) |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
62 throw dukx_exception(m_ctx, -1); |
24
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
63 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
64 duk_get_global_string(m_ctx, "w"); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
65 ASSERT_EQ(32U, duk_to_uint(m_ctx, -1)); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
66 duk_pop(m_ctx); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
67 duk_get_global_string(m_ctx, "h"); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
68 ASSERT_EQ(32U, duk_to_uint(m_ctx, -1)); |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
69 duk_pop(m_ctx); |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
70 } catch (const std::exception &ex) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
71 FAIL() << ex.what(); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
72 } |
24
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
73 } |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
74 |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 TEST_F(TestImage, basic) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 { |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
77 try { |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
78 auto ret = duk_peval_string(m_ctx, |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
79 "w = new Malikania.Window();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
80 "i = new Malikania.Image('images/smiley.png');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
81 "w.setDrawingColor('lightskyblue');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
82 "w.clear();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
83 "i.draw(w, { x: 320 - 16, y: 240 - 16 });" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
84 "w.present();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
85 ); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
87 if (ret != 0) |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
88 throw dukx_exception(m_ctx, -1); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
90 std::this_thread::sleep_for(3s); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
91 } catch (const std::exception &ex) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
92 FAIL() << ex.what(); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
93 } |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 TEST_F(TestImage, stretch) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 { |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
98 try { |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
99 auto ret = duk_peval_string(m_ctx, |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
100 "w = new Malikania.Window();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
101 "i = new Malikania.Image('images/smiley.png');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
102 "w.setDrawingColor('lightskyblue');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
103 "w.clear();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
104 "i.draw(w, null, { x: 10, y: 10, width: 620, height: 460 });" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
105 "w.present();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
106 ); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
108 if (ret != 0) |
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
109 throw dukx_exception(m_ctx, -1); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
111 std::this_thread::sleep_for(3s); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
112 } catch (const std::exception &ex) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
113 FAIL() << ex.what(); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
114 } |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 int main(int argc, char **argv) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 { |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
119 testing::InitGoogleTest(&argc, argv); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
121 return RUN_ALL_TESTS(); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 } |