From 0da6ff4690989b3f52c1333dae1e2f0fccae23a5 Mon Sep 17 00:00:00 2001 From: ThePhD Date: Wed, 11 Dec 2013 18:14:12 -0500 Subject: [PATCH] Test cases for tables and the opening of libraries. --- sol.scratch.cpp | 64 +++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 34 deletions(-) diff --git a/sol.scratch.cpp b/sol.scratch.cpp index efde5c1f..3600df44 100644 --- a/sol.scratch.cpp +++ b/sol.scratch.cpp @@ -21,11 +21,6 @@ int plop_xyz(int x, int y, std::string z) { return 11; } -void run_script(sol::state& lua) { - lua.script("assert(os.fun() == \"test\")\n" - "assert(os.name == \"windows\")"); -} - TEST_CASE("simple/set_global", "Check if the set_global works properly.") { sol::state lua; @@ -81,17 +76,6 @@ TEST_CASE("simple/if", "") { REQUIRE(f == 0.1); } -TEST_CASE("simple/evalStream", "The VM evaluates a stream's contents using a reader") { - sol::state lua; - - std::stringstream sscript; - int g = 9; - sscript << "g = " << g << ";"; - - REQUIRE_NOTHROW(lua.script(sscript.str())); - REQUIRE(lua.get("g") == 9.0); -} - TEST_CASE("simple/callWithParameters", "Lua function is called with a few parameters from C++") { sol::state lua; @@ -157,27 +141,41 @@ TEST_CASE("negative/basicError", "Check if error handling works correctly") { REQUIRE_THROWS(lua.script("nil[5]")); } -/* - lua.get("os").set("name", "windows"); +TEST_CASE("libraries", "Check if we can open libraries through sol") { + sol::state lua; + REQUIRE_NOTHROW(lua.open_libraries(sol::lib::base, sol::lib::os)); +} + +TEST_CASE("tables/variables", "Check if tables and variables work as intended") { + sol::state lua; + lua.open_libraries(sol::lib::base, sol::lib::os); + lua.get("os").set("name", "windows"); + REQUIRE_NOTHROW(lua.script("assert(os.name == \"windows\")")); +} + +TEST_CASE("tables/functions_variables", "Check if tables and function calls work as intended") { + sol::state lua; + lua.open_libraries(sol::lib::base, sol::lib::os); + auto run_script = [ ] (sol::state& lua) -> void { + lua.script("assert(os.fun() == \"test\")"); + }; - SECTION("") lua.get("os").set_function("fun", [ ] () { - std::cout << "stateless lambda()" << std::endl; - return "test"; - } - ); - run_script(lua); + std::cout << "stateless lambda()" << std::endl; + return "test"; + } + ); + REQUIRE_NOTHROW(run_script(lua)); lua.get("os").set_function("fun", &free_function); - run_script(lua); + REQUIRE_NOTHROW(run_script(lua)); // l-value, can optomize auto lval = object(); lua.get("os").set_function("fun", &object::operator(), lval); - run_script(lua); + REQUIRE_NOTHROW((lua)); - // Tests will begin failing here // stateful lambda: non-convertible, unoptomizable int breakit = 50; lua.get("os").set_function("fun", @@ -185,17 +183,15 @@ TEST_CASE("negative/basicError", "Check if error handling works correctly") { std::cout << "stateless lambda()" << std::endl; return "test"; } - ); - run_script(lua); + ); + REQUIRE_NOTHROW(run_script(lua)); // r-value, cannot optomize lua.get("os").set_function("fun", &object::operator(), object()); - run_script(lua); + REQUIRE_NOTHROW(run_script(lua)); // r-value, cannot optomize auto rval = object(); lua.get("os").set_function("fun", &object::operator(), std::move(rval)); - run_script(lua); - -} -*/ + REQUIRE_NOTHROW(run_script(lua)); +} \ No newline at end of file