changeset 197:1b3365343b18

Irccd: fix default amount in Irccd.File.read to -1 and add test
author David Demelier <markand@malikania.fr>
date Wed, 08 Jun 2016 12:37:55 +0200
parents bdeda4baf684
children b87679fbf7d8
files lib/irccd/duktape.hpp lib/irccd/mod-file.cpp tests/js-file/main.cpp
diffstat 3 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lib/irccd/duktape.hpp	Tue Jun 07 20:49:47 2016 +0200
+++ b/lib/irccd/duktape.hpp	Wed Jun 08 12:37:55 2016 +0200
@@ -441,7 +441,7 @@
  *
  * \param ctx the context
  * \param index the array index
- * \param getter the conversion function (e.g. duk_get_int)
+ * \param get the conversion function (e.g. duk_get_int)
  */
 template <typename Getter>
 auto dukx_get_array(duk_context *ctx, duk_idx_t index, Getter &&get)
--- a/lib/irccd/mod-file.cpp	Tue Jun 07 20:49:47 2016 +0200
+++ b/lib/irccd/mod-file.cpp	Wed Jun 08 12:37:55 2016 +0200
@@ -246,7 +246,7 @@
 duk_ret_t methodRead(duk_context *ctx)
 {
 	auto file = self(ctx);
-	auto amount = duk_is_number(ctx, 0) ? duk_get_int(ctx, 0) : 0;
+	auto amount = duk_is_number(ctx, 0) ? duk_get_int(ctx, 0) : -1;
 
 	if (amount == 0 || file->handle() == nullptr)
 		return 0;
--- a/tests/js-file/main.cpp	Tue Jun 07 20:49:47 2016 +0200
+++ b/tests/js-file/main.cpp	Wed Jun 08 12:37:55 2016 +0200
@@ -357,6 +357,27 @@
 	}
 }
 
+TEST_F(TestJsFile, methodRead1)
+{
+	try {
+		duk_push_string(m_plugin->context(), IRCCD_TESTS_DIRECTORY);
+		duk_put_global_string(m_plugin->context(), "directory");
+
+		auto ret = duk_peval_string(m_plugin->context(),
+			"f = new Irccd.File(directory + '/file.txt', 'r');"
+			"result = f.read();"
+		);
+
+		if (ret != 0)
+			throw dukx_exception(m_plugin->context(), -1);
+
+		ASSERT_TRUE(duk_get_global_string(m_plugin->context(), "result"));
+		ASSERT_STREQ("file.txt", duk_get_string(m_plugin->context(), -1));
+	} catch (const std::exception &ex) {
+		FAIL() << ex.what();
+	}
+}
+
 TEST_F(TestJsFile, methodReadline)
 {
 	try {