Mercurial > malikania
annotate tests/libclient/js-image/main.cpp @ 24:7f7c2607ace3
Client: add size property for Malikania.Image, #457
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 06 Apr 2016 13:17:33 +0200 |
parents | 6400830bb36b |
children | 0a1adf7dcca0 |
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 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include <malikania/client-resources-loader.h> |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include <malikania/js-image.h> |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 #include <malikania/js-window.h> |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 #include <malikania/resources-locator.h> |
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: |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 ResourcesLocatorDirectory m_locator; |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 ClientResourcesLoader m_loader; |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 duk::Context m_ctx; |
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: |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 TestImage() |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 : m_locator(SOURCE_DIRECTORY "/resources") |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 , m_loader(m_locator) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 duk::putGlobal(m_ctx, "Malikania", duk::Object()); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 loadMalikaniaImage(m_ctx); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 loadMalikaniaWindow(m_ctx); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 /* Store the loader */ |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 duk::putGlobal(m_ctx, "\xff""\xff""loader", duk::RawPointer<ClientResourcesLoader>{&m_loader}); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 } |
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 { |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
57 try { |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
58 auto ret = duk::pevalString(m_ctx, |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
59 "i = new Malikania.Image('images/smiley.png');" |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
60 "w = i.size.width;" |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
61 "h = i.size.height;" |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
62 ); |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
63 |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
64 if (ret != 0) { |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
65 throw duk::error(m_ctx, -1); |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
66 } |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
67 |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
68 ASSERT_EQ(32, duk::getGlobal<int>(m_ctx, "w")); |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
69 ASSERT_EQ(32, duk::getGlobal<int>(m_ctx, "h")); |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
70 } catch (const std::exception &ex) { |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
71 FAIL() << ex.what(); |
7f7c2607ace3
Client: add size property for Malikania.Image, #457
David Demelier <markand@malikania.fr>
parents:
19
diff
changeset
|
72 } |
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 { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 try { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 auto ret = duk::pevalString(m_ctx, |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 "w = new Malikania.Window();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 "i = new Malikania.Image('images/smiley.png');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 "w.setDrawingColor('lightskyblue');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 "w.clear();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 "i.draw(w, { x: 320 - 16, y: 240 - 16 });" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 "w.present();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 ); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 if (ret != 0) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 throw duk::error(m_ctx, -1); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 std::this_thread::sleep_for(3s); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 } catch (const std::exception &ex) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 FAIL() << ex.what(); |
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 |
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 { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 try { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 auto ret = duk::pevalString(m_ctx, |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 "w = new Malikania.Window();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 "i = new Malikania.Image('images/smiley.png');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 "w.setDrawingColor('lightskyblue');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 "w.clear();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 "i.draw(w, null, { x: 10, y: 10, width: 620, height: 460 });" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 "w.present();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 ); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 if (ret != 0) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 throw duk::error(m_ctx, -1); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 std::this_thread::sleep_for(3s); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 } catch (const std::exception &ex) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 FAIL() << ex.what(); |
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 } |
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 { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 testing::InitGoogleTest(&argc, argv); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 return RUN_ALL_TESTS(); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 } |