// https://github.com/vinniefalco/LuaBridge // // Copyright 2019, Dmitry Tarakanov // SPDX-License-Identifier: MIT #include "TestBase.h" #include "TestTypes.h" #include "LuaBridge/List.h" #include namespace { template std::list toList (const std::vector & vector) { return {vector.begin (), vector.end ()}; } } // namespace template struct ListTest : TestBase { }; TYPED_TEST_CASE_P (ListTest); TYPED_TEST_P (ListTest, LuaRef) { using Traits = TypeTraits ; this->runLua ("result = {" + Traits::list () + "}"); std::list expected = toList (Traits::values ()); std::list 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 lvalue {10, 20, 30}; foo (lvalue); ASSERT_TRUE (result ().isTable ()); ASSERT_EQ (lvalue, result > ()); resetResult (); const std::list constLvalue = lvalue; foo (constLvalue); ASSERT_TRUE (result ().isTable ()); ASSERT_EQ (lvalue, result > ()); }