Mercurial > irccd
changeset 169:f2099005b23d
Irccd: unbreak test-js-irccd
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 25 May 2016 22:30:44 +0200 |
parents | 66dc46db79f7 |
children | 28080933bac6 |
files | lib/irccd/js.hpp tests/js-irccd/empty.js tests/js-irccd/main.cpp |
diffstat | 2 files changed, 43 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/irccd/js.hpp Wed May 25 22:25:59 2016 +0200 +++ b/lib/irccd/js.hpp Wed May 25 22:30:44 2016 +0200 @@ -221,7 +221,7 @@ */ duk_idx_t nargs{0}; - Function(duk_c_function f, duk_idx_t n) + Function(duk_c_function f, duk_idx_t n = 0) : function(f) , nargs(n) {
--- a/tests/js-irccd/main.cpp Wed May 25 22:25:59 2016 +0200 +++ b/tests/js-irccd/main.cpp Wed May 25 22:30:44 2016 +0200 @@ -18,46 +18,50 @@ #include <gtest/gtest.h> +#include <irccd/irccd.hpp> +#include <irccd/mod-irccd.hpp> +#include <irccd/plugin-js.hpp> +#include <irccd/service-module.hpp> #include <irccd/sysconfig.hpp> -#include <irccd/js-irccd.hpp> -#include <irccd/logger.hpp> - using namespace irccd; -TEST(TestJsIrccd, version) -{ - duk::Context ctx; +class TestJsIrccd : public testing::Test { +protected: + Irccd m_irccd; + std::shared_ptr<JsPlugin> m_plugin; - loadJsIrccd(ctx); + TestJsIrccd() + : m_plugin(std::make_shared<JsPlugin>("empty", SOURCEDIR "/empty.js")) + { + m_irccd.moduleService().get("Irccd")->load(m_irccd, *m_plugin); + } +}; +TEST_F(TestJsIrccd, version) +{ try { - auto ret = duk::pevalString(ctx, + auto ret = duk::pevalString(m_plugin->context(), "major = Irccd.version.major;" "minor = Irccd.version.minor;" "patch = Irccd.version.patch;" ); - if (ret != 0) { - throw duk::error(ctx, -1); - } + if (ret != 0) + throw duk::error(m_plugin->context(), -1); - ASSERT_EQ(IRCCD_VERSION_MAJOR, duk::getGlobal<int>(ctx, "major")); - ASSERT_EQ(IRCCD_VERSION_MINOR, duk::getGlobal<int>(ctx, "minor")); - ASSERT_EQ(IRCCD_VERSION_PATCH, duk::getGlobal<int>(ctx, "patch")); + ASSERT_EQ(IRCCD_VERSION_MAJOR, duk::getGlobal<int>(m_plugin->context(), "major")); + ASSERT_EQ(IRCCD_VERSION_MINOR, duk::getGlobal<int>(m_plugin->context(), "minor")); + ASSERT_EQ(IRCCD_VERSION_PATCH, duk::getGlobal<int>(m_plugin->context(), "patch")); } catch (const std::exception &ex) { FAIL() << ex.what(); } } -TEST(SystemError, fromJavascript) +TEST_F(TestJsIrccd, fromJavascript) { - duk::Context ctx; - - loadJsIrccd(ctx); - try { - auto ret = duk::pevalString(ctx, + auto ret = duk::pevalString(m_plugin->context(), "try {" " throw new Irccd.SystemError(1, 'test');" "} catch (e) {" @@ -69,36 +73,31 @@ "}" ); - if (ret != 0) { - throw duk::error(ctx, -1); - } + if (ret != 0) + throw duk::error(m_plugin->context(), -1); - ASSERT_EQ(1, duk::getGlobal<int>(ctx, "errno")); - ASSERT_EQ("SystemError", duk::getGlobal<std::string>(ctx, "name")); - ASSERT_EQ("test", duk::getGlobal<std::string>(ctx, "message")); - ASSERT_TRUE(duk::getGlobal<bool>(ctx, "v1")); - ASSERT_TRUE(duk::getGlobal<bool>(ctx, "v2")); + ASSERT_EQ(1, duk::getGlobal<int>(m_plugin->context(), "errno")); + ASSERT_EQ("SystemError", duk::getGlobal<std::string>(m_plugin->context(), "name")); + ASSERT_EQ("test", duk::getGlobal<std::string>(m_plugin->context(), "message")); + ASSERT_TRUE(duk::getGlobal<bool>(m_plugin->context(), "v1")); + ASSERT_TRUE(duk::getGlobal<bool>(m_plugin->context(), "v2")); } catch (const std::exception &ex) { FAIL() << ex.what(); } } -TEST(SystemError, fromNative) +TEST_F(TestJsIrccd, fromNative) { - duk::Context ctx; - - loadJsIrccd(ctx); - try { - duk::push(ctx, duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret { + duk::push(m_plugin->context(), duk::Function{[] (duk::ContextPtr ctx) -> duk::Ret { duk::raise(ctx, SystemError{EINVAL, "hey"}); return 0; }}); - duk::putGlobal(ctx, "f"); + duk::putGlobal(m_plugin->context(), "f"); - auto ret = duk::pevalString(ctx, + auto ret = duk::pevalString(m_plugin->context(), "try {" " f();" "} catch (e) {" @@ -110,15 +109,14 @@ "}" ); - if (ret != 0) { - throw duk::error(ctx, -1); - } + if (ret != 0) + throw duk::error(m_plugin->context(), -1); - ASSERT_EQ(EINVAL, duk::getGlobal<int>(ctx, "errno")); - ASSERT_EQ("SystemError", duk::getGlobal<std::string>(ctx, "name")); - ASSERT_EQ("hey", duk::getGlobal<std::string>(ctx, "message")); - ASSERT_TRUE(duk::getGlobal<bool>(ctx, "v1")); - ASSERT_TRUE(duk::getGlobal<bool>(ctx, "v2")); + ASSERT_EQ(EINVAL, duk::getGlobal<int>(m_plugin->context(), "errno")); + ASSERT_EQ("SystemError", duk::getGlobal<std::string>(m_plugin->context(), "name")); + ASSERT_EQ("hey", duk::getGlobal<std::string>(m_plugin->context(), "message")); + ASSERT_TRUE(duk::getGlobal<bool>(m_plugin->context(), "v1")); + ASSERT_TRUE(duk::getGlobal<bool>(m_plugin->context(), "v2")); } catch (const std::exception &ex) { FAIL() << ex.what(); }