Mercurial > code
view modules/js/test/main.cpp @ 612:18ec7f4fc3de
Js: new style, closes #685
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 21 Aug 2017 11:08:49 +0200 |
parents | f48bb09bccc7 |
children | 266f32919d0a |
line wrap: on
line source
/* * main.cpp -- test Duktape extras * * Copyright (c) 2016 David Demelier <markand@malikania.fr> * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #define BOOST_TEST_MODULE "Duktape" #include <boost/test/unit_test.hpp> #include <duktape.hpp> /* * Standard exceptions. * -------------------------------------------------------- */ BOOST_AUTO_TEST_SUITE(standard_exceptions) BOOST_AUTO_TEST_CASE(error) { dukx_unique_context ctx; duk_push_c_function(ctx, [] (duk_context* ctx) -> duk_idx_t { return dukx_throw(ctx, dukx_error("error thrown")); }, 0); duk_put_global_string(ctx, "f"); duk_peval_string(ctx, "try {" " f();" "} catch (ex) {" " name = ex.name;" " message = ex.message;" " instance = (ex instanceof Error);" "}" ); duk_get_global_string(ctx, "name"); BOOST_REQUIRE_EQUAL("Error", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "message"); BOOST_REQUIRE_EQUAL("error thrown", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "instance"); BOOST_REQUIRE(duk_get_boolean(ctx, -1)); } BOOST_AUTO_TEST_CASE(eval_error) { dukx_unique_context ctx; duk_push_c_function(ctx, [] (duk_context* ctx) -> duk_idx_t { return dukx_throw(ctx, dukx_eval_error("error thrown")); }, 0); duk_put_global_string(ctx, "f"); duk_peval_string(ctx, "try {" " f();" "} catch (ex) {" " name = ex.name;" " message = ex.message;" " instance = (ex instanceof EvalError);" "}" ); duk_get_global_string(ctx, "name"); BOOST_REQUIRE_EQUAL("EvalError", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "message"); BOOST_REQUIRE_EQUAL("error thrown", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "instance"); BOOST_REQUIRE(duk_get_boolean(ctx, -1)); } BOOST_AUTO_TEST_CASE(range_error) { dukx_unique_context ctx; duk_push_c_function(ctx, [] (duk_context* ctx) -> duk_idx_t { return dukx_throw(ctx, dukx_range_error("error thrown")); }, 0); duk_put_global_string(ctx, "f"); duk_peval_string(ctx, "try {" " f();" "} catch (ex) {" " name = ex.name;" " message = ex.message;" " instance = (ex instanceof RangeError);" "}" ); duk_get_global_string(ctx, "name"); BOOST_REQUIRE_EQUAL("RangeError", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "message"); BOOST_REQUIRE_EQUAL("error thrown", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "instance"); BOOST_REQUIRE(duk_get_boolean(ctx, -1)); } BOOST_AUTO_TEST_CASE(reference_error) { dukx_unique_context ctx; duk_push_c_function(ctx, [] (duk_context* ctx) -> duk_idx_t { return dukx_throw(ctx, dukx_reference_error("error thrown")); }, 0); duk_put_global_string(ctx, "f"); duk_peval_string(ctx, "try {" " f();" "} catch (ex) {" " name = ex.name;" " message = ex.message;" " instance = (ex instanceof ReferenceError);" "}" ); duk_get_global_string(ctx, "name"); BOOST_REQUIRE_EQUAL("ReferenceError", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "message"); BOOST_REQUIRE_EQUAL("error thrown", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "instance"); BOOST_REQUIRE(duk_get_boolean(ctx, -1)); } BOOST_AUTO_TEST_CASE(syntax_error) { dukx_unique_context ctx; duk_push_c_function(ctx, [] (duk_context* ctx) -> duk_idx_t { return dukx_throw(ctx, dukx_syntax_error("error thrown")); }, 0); duk_put_global_string(ctx, "f"); duk_peval_string(ctx, "try {" " f();" "} catch (ex) {" " name = ex.name;" " message = ex.message;" " instance = (ex instanceof SyntaxError);" "}" ); duk_get_global_string(ctx, "name"); BOOST_REQUIRE_EQUAL("SyntaxError", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "message"); BOOST_REQUIRE_EQUAL("error thrown", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "instance"); BOOST_REQUIRE(duk_get_boolean(ctx, -1)); } BOOST_AUTO_TEST_CASE(type_error) { dukx_unique_context ctx; duk_push_c_function(ctx, [] (duk_context* ctx) -> duk_idx_t { return dukx_throw(ctx, dukx_type_error("error thrown")); }, 0); duk_put_global_string(ctx, "f"); duk_peval_string(ctx, "try {" " f();" "} catch (ex) {" " name = ex.name;" " message = ex.message;" " instance = (ex instanceof TypeError);" "}" ); duk_get_global_string(ctx, "name"); BOOST_REQUIRE_EQUAL("TypeError", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "message"); BOOST_REQUIRE_EQUAL("error thrown", dukx_get_std_string(ctx, -1)); duk_get_global_string(ctx, "instance"); BOOST_REQUIRE(duk_get_boolean(ctx, -1)); } BOOST_AUTO_TEST_CASE(uriError) { } BOOST_AUTO_TEST_SUITE_END()