Mercurial > malikania
annotate tests/libcommon/js-elapsed-timer/main.cpp @ 77:61ea80e925ab
CMake: import pugixml 1.8, closes #613
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 20 Jan 2017 11:00:14 +0100 |
parents | 858621081b95 |
children | 119bcc5a727e |
rev | line source |
---|---|
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- test ElapsedTimer (JavaScript binding) |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
76 | 4 * Copyright (c) 2013-2017 Malikania Authors |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <thread> |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
21 #define BOOST_TEST_MODULE "Javascript ElapsedTimer" |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
22 #include <boost/format.hpp> |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
23 #include <boost/test/unit_test.hpp> |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
24 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
25 #include <malikania/js_elapsed_timer.hpp> |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
27 using boost::format; |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
28 using boost::str; |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
29 |
43
fabbe1759cec
Misc: switch to mlk namespace, closes #589
David Demelier <markand@malikania.fr>
parents:
42
diff
changeset
|
30 using namespace mlk; |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 using namespace std::chrono_literals; |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 /* |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 * For all tests, we tolerate 30 ms because some systems have bigger lags. |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 */ |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 static constexpr int margin = 30; |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
38 class test_elapsed_timer { |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 protected: |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
40 dukx_context m_ctx; |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
42 test_elapsed_timer() |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
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"); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
46 mlk::dukx_load_elapsedtimer(m_ctx); |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
47 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
49 inline void assert_range(int value, int expected) const |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
50 { |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
51 if (value < (expected - margin) || value > (expected + margin)) { |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
52 throw std::invalid_argument( |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
53 str(format("%d is bigger than [%d, %d]") % value % (expected - margin) % (expected + margin))); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
54 } |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
55 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 }; |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
58 BOOST_FIXTURE_TEST_SUITE(test_elapsed_timer_suite, test_elapsed_timer) |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
59 |
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
60 BOOST_AUTO_TEST_CASE(standard) |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 { |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
62 try { |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
63 if (duk_peval_string(m_ctx, "timer = new Malikania.ElapsedTimer();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
64 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
65 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
67 std::this_thread::sleep_for(300ms); |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
69 if (duk_peval_string(m_ctx, "result = timer.elapsed();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
70 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
71 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
73 duk_get_global_string(m_ctx, "result"); |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
74 assert_range(duk_to_int(m_ctx, -1), 300); |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
75 duk_pop(m_ctx); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
76 } catch (const std::exception &ex) { |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
77 BOOST_FAIL(ex.what()); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
78 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 } |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
81 BOOST_AUTO_TEST_CASE(reset) |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 { |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
83 try { |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
84 if (duk_peval_string(m_ctx, "timer = new Malikania.ElapsedTimer();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
85 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
86 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
88 std::this_thread::sleep_for(300ms); |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
90 if (duk_peval_string(m_ctx, "timer.reset(); result = timer.elapsed();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
91 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
92 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
94 duk_get_global_string(m_ctx, "result"); |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
95 assert_range(duk_to_int(m_ctx, -1), 0); |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
96 duk_pop(m_ctx); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
97 } catch (const std::exception &ex) { |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
98 BOOST_FAIL(ex.what()); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
99 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 } |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
102 BOOST_AUTO_TEST_CASE(pause) |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 { |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
104 try { |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
105 if (duk_peval_string(m_ctx, "timer = new Malikania.ElapsedTimer();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
106 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
107 } |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
108 |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
109 /* |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
110 * Simulate a pause in the game like this: |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
111 * |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
112 * start pause restart elapsed |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
113 * | 10ms |.5ms.| 6ms | |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
114 * |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
115 * Since the game was paused, the 5ms must not be totalized. |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
116 */ |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
117 std::this_thread::sleep_for(10ms); |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
119 if (duk_peval_string(m_ctx, "timer.pause();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
120 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
121 } |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
122 |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
123 std::this_thread::sleep_for(5ms); |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
124 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
125 if (duk_peval_string(m_ctx, "timer.restart();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
126 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
127 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
129 std::this_thread::sleep_for(6ms); |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
131 if (duk_peval_string(m_ctx, "result = timer.elapsed()") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
132 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
133 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
135 duk_get_global_string(m_ctx, "result"); |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
136 assert_range(duk_to_int(m_ctx, -1), 16); |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
137 duk_pop(m_ctx); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
138 } catch (const std::exception &ex) { |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
139 BOOST_FAIL(ex.what()); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
140 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 } |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
143 BOOST_AUTO_TEST_CASE(doublecheck) |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 { |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
145 try { |
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
146 if (duk_peval_string(m_ctx, "timer = new Malikania.ElapsedTimer();") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
147 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
148 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
150 std::this_thread::sleep_for(50ms); |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
152 if (duk_peval_string(m_ctx, "result = timer.elapsed()") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
153 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
154 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
156 std::this_thread::sleep_for(50ms); |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
158 if (duk_peval_string(m_ctx, "result = timer.elapsed()") != 0) { |
63
96ba0c5cf893
Misc: update duktape.hpp to new style
David Demelier <markand@malikania.fr>
parents:
44
diff
changeset
|
159 throw dukx_get_exception(m_ctx, -1); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
160 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
162 duk_get_global_string(m_ctx, "result"); |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
163 assert_range(duk_to_int(m_ctx, -1), 100); |
36
9af360f34c7d
Misc: use raw duktape API
David Demelier <markand@malikania.fr>
parents:
33
diff
changeset
|
164 duk_pop(m_ctx); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
165 } catch (const std::exception &ex) { |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
166 BOOST_FAIL(ex.what()); |
42
a47a4477f347
Misc: new style, closes #578
David Demelier <markand@malikania.fr>
parents:
36
diff
changeset
|
167 } |
20
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 } |
787c2adb366c
Client: add JavaScript bindings for ElapsedTimer, #464
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 |
44
f30c84b4b9ed
Tests: switch from GoogleTest to Boost.Unit, closes #588
David Demelier <markand@malikania.fr>
parents:
43
diff
changeset
|
170 BOOST_AUTO_TEST_SUITE_END() |