Mercurial > malikania
annotate tests/libclient/js-image/main.cpp @ 19:6400830bb36b
Client: add some JavaScript bindings for Image, #457
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 04 Apr 2016 13:20:06 +0200 |
parents | |
children | 7f7c2607ace3 |
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 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 TEST_F(TestImage, basic) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 try { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 auto ret = duk::pevalString(m_ctx, |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 "w = new Malikania.Window();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 "i = new Malikania.Image('images/smiley.png');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 "w.setDrawingColor('lightskyblue');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 "w.clear();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 "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
|
64 "w.present();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 ); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 if (ret != 0) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 throw duk::error(m_ctx, -1); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 std::this_thread::sleep_for(3s); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 } catch (const std::exception &ex) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 FAIL() << ex.what(); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } |
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 TEST_F(TestImage, stretch) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 try { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 auto ret = duk::pevalString(m_ctx, |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 "w = new Malikania.Window();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 "i = new Malikania.Image('images/smiley.png');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 "w.setDrawingColor('lightskyblue');" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 "w.clear();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 "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
|
86 "w.present();" |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 ); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 if (ret != 0) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 throw duk::error(m_ctx, -1); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 } |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 std::this_thread::sleep_for(3s); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 } catch (const std::exception &ex) { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 FAIL() << ex.what(); |
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 } |
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 int main(int argc, char **argv) |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 { |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 testing::InitGoogleTest(&argc, argv); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 return RUN_ALL_TESTS(); |
6400830bb36b
Client: add some JavaScript bindings for Image, #457
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 } |