diff options
author | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-28 00:57:57 -0400 |
---|---|---|
committer | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-28 00:57:57 -0400 |
commit | 85fb2bff38b2ef6cb17e86c5f602ee09a365b117 (patch) | |
tree | a8066d33233ec9b6a2b9bb281a1de040ab96be7b /lib/LuaBridge/Tests/Source/ListTests.cpp | |
parent | 787393dd86d6c37b5680847dd4eef14406a86687 (diff) |
Added LuaBridge support
Diffstat (limited to 'lib/LuaBridge/Tests/Source/ListTests.cpp')
-rw-r--r-- | lib/LuaBridge/Tests/Source/ListTests.cpp | 77 |
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>> ()); +} |