Mercurial > malikania
diff examples/js-sprite/main.cpp @ 80:a162f380f02e
CMake: create examples, closes #615
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 22 Jan 2017 09:59:14 +0100 |
parents | 78de82cc6bde |
children | 301599387b40 |
line wrap: on
line diff
--- a/examples/js-sprite/main.cpp Sat Jan 21 14:13:52 2017 +0100 +++ b/examples/js-sprite/main.cpp Sun Jan 22 09:59:14 2017 +0100 @@ -1,7 +1,7 @@ /* * main.cpp -- test Sprite (JavaScript binding) * - * Copyright (c) 2013-2016 Malikania Authors + * Copyright (c) 2013-2017 Malikania Authors * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -19,183 +19,59 @@ #include <chrono> #include <thread> -#define BOOST_TEST_MODULE "Javascript Sprite" -#include <boost/test/unit_test.hpp> - #include <malikania/js_client_resources_loader.hpp> #include <malikania/js_image.hpp> #include <malikania/js_sprite.hpp> #include <malikania/js_window.hpp> #include <malikania/resources_locator.hpp> -using namespace mlk; - using namespace std::chrono_literals; -class test_sprite { -protected: - directory_resources_locator m_locator; - client_resources_loader m_loader; - dukx_context m_ctx; - -public: - test_sprite() - : m_locator(SOURCE_DIRECTORY "/resources") - , m_loader(m_locator) - { - duk_push_object(m_ctx); - duk_put_global_string(m_ctx, "Malikania"); - mlk::dukx_load_image(m_ctx); - mlk::dukx_load_sprite(m_ctx); - mlk::dukx_load_window(m_ctx); - dukx_put_client_loader(m_ctx, m_loader); - } -}; - -BOOST_FIXTURE_TEST_SUITE(test_sprite_suite, test_sprite) - -BOOST_AUTO_TEST_CASE(cell) +void basic(dukx_context& ctx) { - try { - auto ret = duk_peval_string(m_ctx, - "s = new Malikania.Sprite('sprites/margins.json');" - "w = s.cell.width;" - "h = s.cell.height;" - ); - - if (ret != 0) { - throw dukx_get_exception(m_ctx, -1); - } + auto ret = duk_peval_string(ctx, + "w = new Malikania.Window();" + "s = new Malikania.Sprite('sprites/margins.json');" + "c = 0;" + ); - duk_get_global_string(m_ctx, "w"); - BOOST_REQUIRE_EQUAL(32U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - duk_get_global_string(m_ctx, "h"); - BOOST_REQUIRE_EQUAL(32U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - } catch (const std::exception &ex) { - BOOST_FAIL(ex.what()); + if (ret != 0) { + throw dukx_get_exception(ctx, -1); } -} - -BOOST_AUTO_TEST_CASE(columns) -{ - try { - auto ret = duk_peval_string(m_ctx, - "s = new Malikania.Sprite('sprites/margins.json');" - "n = s.columns;" - ); - if (ret != 0) { - throw dukx_get_exception(m_ctx, -1); - } - - duk_get_global_string(m_ctx, "n"); - BOOST_REQUIRE_EQUAL(4U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - } catch (const std::exception &ex) { - BOOST_FAIL(ex.what()); - } -} - -BOOST_AUTO_TEST_CASE(margins) -{ - try { - auto ret = duk_peval_string(m_ctx, - "s = new Malikania.Sprite('sprites/margins.json');" - "w = s.margins.width;" - "h = s.margins.height;" + for (unsigned c = 0; c < 12; ++c) { + auto ret = duk_peval_string(ctx, + "w.setDrawingColor('lightskyblue');" + "w.clear();" + "s.draw(w, c++, { x: 320 - 16, y: 240 - 16 });" + "w.present();" ); if (ret != 0) { - throw dukx_get_exception(m_ctx, -1); + throw dukx_get_exception(ctx, -1); } - duk_get_global_string(m_ctx, "w"); - BOOST_REQUIRE_EQUAL(4U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - duk_get_global_string(m_ctx, "h"); - BOOST_REQUIRE_EQUAL(6U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - } catch (const std::exception &ex) { - BOOST_FAIL(ex.what()); - } -} - -BOOST_AUTO_TEST_CASE(rows) -{ - try { - auto ret = duk_peval_string(m_ctx, - "s = new Malikania.Sprite('sprites/margins.json');" - "n = s.rows;" - ); - - if (ret != 0) { - throw dukx_get_exception(m_ctx, -1); - } - - duk_get_global_string(m_ctx, "n"); - BOOST_REQUIRE_EQUAL(3U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - } catch (const std::exception &ex) { - BOOST_FAIL(ex.what()); + std::this_thread::sleep_for(1s); } } -BOOST_AUTO_TEST_CASE(space) -{ - try { - auto ret = duk_peval_string(m_ctx, - "s = new Malikania.Sprite('sprites/margins.json');" - "w = s.space.width;" - "h = s.space.height;" - ); - - if (ret != 0) { - throw dukx_get_exception(m_ctx, -1); - } - - duk_get_global_string(m_ctx, "w"); - BOOST_REQUIRE_EQUAL(2U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - duk_get_global_string(m_ctx, "h"); - BOOST_REQUIRE_EQUAL(3U, duk_to_uint(m_ctx, -1)); - duk_pop(m_ctx); - } catch (const std::exception &ex) { - BOOST_FAIL(ex.what()); - } -} - -BOOST_AUTO_TEST_CASE(basic) +int main() { try { - auto ret = duk_peval_string(m_ctx, - "w = new Malikania.Window();" - "s = new Malikania.Sprite('sprites/margins.json');" - "c = 0;" - ); - - if (ret != 0) { - throw dukx_get_exception(m_ctx, -1); - } + mlk::directory_resources_locator locator(SOURCE_DIRECTORY); + mlk::client_resources_loader loader(locator); + dukx_context ctx; - for (unsigned c = 0; c < 12; ++c) { - auto ret = duk_peval_string(m_ctx, - "w.setDrawingColor('lightskyblue');" - "w.clear();" - "s.draw(w, c++, { x: 320 - 16, y: 240 - 16 });" - "w.present();" - ); + duk_push_object(ctx); + duk_put_global_string(ctx, "Malikania"); + mlk::dukx_load_image(ctx); + mlk::dukx_load_sprite(ctx); + mlk::dukx_load_window(ctx); + dukx_put_client_loader(ctx, loader); - if (ret != 0) { - throw dukx_get_exception(m_ctx, -1); - } - - std::this_thread::sleep_for(1s); - } - } catch (const std::exception &ex) { - BOOST_FAIL(ex.what()); + basic(ctx); + } catch (const std::exception& ex) { + std::cerr << ex.what() << std::endl; + return 1; } } - -BOOST_AUTO_TEST_SUITE_END()