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();
 	}