Mercurial > malikania
annotate tests/libclient/js-image/main.cpp @ 33:d4f5f7231b84
Misc: switch to .hpp, dos2unix everything while here, #478
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 17 Jun 2016 13:12:35 +0200 |
parents | a1e80d991968 |
children | 9af360f34c7d |
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 |
33
d4f5f7231b84
Misc: switch to .hpp, dos2unix everything while here, #478
David Demelier <markand@malikania.fr>
parents:
30
diff
changeset
|
24 #include <malikania/client-resources-loader.hpp> |
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; |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
38 duk::Context m_ctx; |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 public: |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
41 TestImage() |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
42 : m_locator(SOURCE_DIRECTORY "/resources") |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
43 , m_loader(m_locator) |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
44 { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
45 duk::putGlobal(m_ctx, "Malikania", duk::Object()); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
47 loadMalikaniaImage(m_ctx); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
48 loadMalikaniaWindow(m_ctx); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
50 /* Store the loader */ |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
51 duk::putGlobal(m_ctx, "\xff""\xff""loader", &m_loader); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
52 } |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 }; |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
24
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
55 TEST_F(TestImage, size) |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
56 { |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
57 try { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
58 auto ret = duk::pevalString(m_ctx, |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
59 "i = new Malikania.Image('images/smiley.png');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
60 "w = i.size.width;" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
61 "h = i.size.height;" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
62 ); |
24
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
63 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
64 if (ret != 0) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
65 throw duk::exception(m_ctx, -1); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
66 } |
24
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
67 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
68 ASSERT_EQ(32, duk::getGlobal<int>(m_ctx, "w")); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
69 ASSERT_EQ(32, duk::getGlobal<int>(m_ctx, "h")); |
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 { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
78 auto ret = duk::pevalString(m_ctx, |
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 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
87 if (ret != 0) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
88 throw duk::exception(m_ctx, -1); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
89 } |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
91 std::this_thread::sleep_for(3s); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
92 } catch (const std::exception &ex) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
93 FAIL() << ex.what(); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
94 } |
19
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 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 TEST_F(TestImage, stretch) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 { |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
99 try { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
100 auto ret = duk::pevalString(m_ctx, |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
101 "w = new Malikania.Window();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
102 "i = new Malikania.Image('images/smiley.png');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
103 "w.setDrawingColor('lightskyblue');" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
104 "w.clear();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
105 "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
|
106 "w.present();" |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
107 ); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
109 if (ret != 0) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
110 throw duk::exception(m_ctx, -1); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
111 } |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
113 std::this_thread::sleep_for(3s); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
114 } catch (const std::exception &ex) { |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
115 FAIL() << ex.what(); |
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
116 } |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 int main(int argc, char **argv) |
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 testing::InitGoogleTest(&argc, argv); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 |
30
a1e80d991968
Misc: convert to spaces, #519
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
123 return RUN_ALL_TESTS(); |
19
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 } |