aboutsummaryrefslogtreecommitdiffstats
path: root/lib/LuaBridge/Tests/Source/ListTests.cpp
diff options
context:
space:
mode:
authorAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-28 00:57:57 -0400
committerAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-28 00:57:57 -0400
commit85fb2bff38b2ef6cb17e86c5f602ee09a365b117 (patch)
treea8066d33233ec9b6a2b9bb281a1de040ab96be7b /lib/LuaBridge/Tests/Source/ListTests.cpp
parent787393dd86d6c37b5680847dd4eef14406a86687 (diff)
Added LuaBridge support
Diffstat (limited to 'lib/LuaBridge/Tests/Source/ListTests.cpp')
-rw-r--r--lib/LuaBridge/Tests/Source/ListTests.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/LuaBridge/Tests/Source/ListTests.cpp b/lib/LuaBridge/Tests/Source/ListTests.cpp
new file mode 100644
index 0000000..5376116
--- /dev/null
+++ b/lib/LuaBridge/Tests/Source/ListTests.cpp
@@ -0,0 +1,77 @@
+// https://github.com/vinniefalco/LuaBridge
+//
+// Copyright 2019, Dmitry Tarakanov
+// SPDX-License-Identifier: MIT
+
+
+#include "TestBase.h"
+#include "TestTypes.h"
+
+#include "LuaBridge/List.h"
+
+#include <list>
+
+
+namespace {
+
+template <class T>
+
+std::list <T> toList (const std::vector <T>& vector)
+{
+ return {vector.begin (), vector.end ()};
+}
+
+} // namespace
+
+
+template <class T>
+struct ListTest : TestBase
+{
+};
+
+TYPED_TEST_CASE_P (ListTest);
+
+TYPED_TEST_P (ListTest, LuaRef)
+{
+ using Traits = TypeTraits <TypeParam>;
+
+ this->runLua ("result = {" + Traits::list () + "}");
+
+ std::list <TypeParam> expected = toList (Traits::values ());
+ std::list <TypeParam> actual = this->result ();
+ ASSERT_EQ (expected, actual);
+}
+
+REGISTER_TYPED_TEST_CASE_P (ListTest, LuaRef);
+
+INSTANTIATE_TYPED_TEST_CASE_P(ListTest, ListTest, TestTypes);
+
+
+struct ListTests : TestBase
+{
+};
+
+
+TEST_F (ListTests, PassToFunction)
+{
+ runLua (
+ "function foo (list) "
+ " result = list "
+ "end");
+
+ auto foo = luabridge::getGlobal (L, "foo");
+
+ resetResult ();
+
+ std::list <int> lvalue {10, 20, 30};
+ foo (lvalue);
+ ASSERT_TRUE (result ().isTable ());
+ ASSERT_EQ (lvalue, result <std::list<int>> ());
+
+ resetResult ();
+
+ const std::list <int> constLvalue = lvalue;
+ foo (constLvalue);
+ ASSERT_TRUE (result ().isTable ());
+ ASSERT_EQ (lvalue, result <std::list<int>> ());
+}