diff options
Diffstat (limited to 'unit_tests/shared.cpp')
| -rw-r--r-- | unit_tests/shared.cpp | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/unit_tests/shared.cpp b/unit_tests/shared.cpp index 1197ce3..daac5a2 100644 --- a/unit_tests/shared.cpp +++ b/unit_tests/shared.cpp | |||
| @@ -18,9 +18,9 @@ namespace | |||
| 18 | { | 18 | { |
| 19 | STACK_CHECK_START_REL(L_, 0); | 19 | STACK_CHECK_START_REL(L_, 0); |
| 20 | lua_getglobal(L_, "package"); // L_: package | 20 | lua_getglobal(L_, "package"); // L_: package |
| 21 | std::ignore = luaG_getfield(L_, kIdxTop, "preload"); // L_: package package.preload | 21 | std::ignore = luaW_getfield(L_, kIdxTop, "preload"); // L_: package package.preload |
| 22 | lua_pushcfunction(L_, openf_); // L_: package package.preload openf_ | 22 | lua_pushcfunction(L_, openf_); // L_: package package.preload openf_ |
| 23 | luaG_setfield(L_, StackIndex{ -2 }, name_); // L_: package package.preload | 23 | luaW_setfield(L_, StackIndex{ -2 }, name_); // L_: package package.preload |
| 24 | lua_pop(L_, 2); | 24 | lua_pop(L_, 2); |
| 25 | STACK_CHECK(L_, 0); | 25 | STACK_CHECK(L_, 0); |
| 26 | } | 26 | } |
| @@ -32,7 +32,7 @@ namespace | |||
| 32 | lua_CFunction sFreezingFinalizer = +[](lua_State* const L_) { | 32 | lua_CFunction sFreezingFinalizer = +[](lua_State* const L_) { |
| 33 | std::lock_guard _guard{ sCallCountsLock }; | 33 | std::lock_guard _guard{ sCallCountsLock }; |
| 34 | sFinalizerHits[L_].test_and_set(); | 34 | sFinalizerHits[L_].test_and_set(); |
| 35 | luaG_pushstring(L_, "freeze"); // just freeze the thread in place so that it can be debugged | 35 | luaW_pushstring(L_, "freeze"); // just freeze the thread in place so that it can be debugged |
| 36 | return 1; | 36 | return 1; |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| @@ -47,7 +47,7 @@ namespace | |||
| 47 | }; | 47 | }; |
| 48 | 48 | ||
| 49 | lua_CFunction sNewUserData = +[](lua_State* const L_) { | 49 | lua_CFunction sNewUserData = +[](lua_State* const L_) { |
| 50 | std::ignore = luaG_newuserdatauv<int>(L_, UserValueCount{ 0 }); | 50 | std::ignore = luaW_newuserdatauv<int>(L_, UserValueCount{ 0 }); |
| 51 | return 1; | 51 | return 1; |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| @@ -62,7 +62,7 @@ namespace | |||
| 62 | lua_CFunction sBlockFor = +[](lua_State* const L_) { | 62 | lua_CFunction sBlockFor = +[](lua_State* const L_) { |
| 63 | std::chrono::time_point<std::chrono::steady_clock> _until{ std::chrono::time_point<std::chrono::steady_clock>::max() }; | 63 | std::chrono::time_point<std::chrono::steady_clock> _until{ std::chrono::time_point<std::chrono::steady_clock>::max() }; |
| 64 | lua_settop(L_, 1); | 64 | lua_settop(L_, 1); |
| 65 | if (luaG_type(L_, kIdxTop) == LuaType::NUMBER) { // we don't want to use lua_isnumber() because of autocoercion | 65 | if (luaW_type(L_, kIdxTop) == LuaType::NUMBER) { // we don't want to use lua_isnumber() because of autocoercion |
| 66 | lua_Duration const _duration{ lua_tonumber(L_, kIdxTop) }; | 66 | lua_Duration const _duration{ lua_tonumber(L_, kIdxTop) }; |
| 67 | if (_duration.count() >= 0.0) { | 67 | if (_duration.count() >= 0.0) { |
| 68 | _until = std::chrono::steady_clock::now() + std::chrono::duration_cast<std::chrono::steady_clock::duration>(_duration); | 68 | _until = std::chrono::steady_clock::now() + std::chrono::duration_cast<std::chrono::steady_clock::duration>(_duration); |
| @@ -82,7 +82,7 @@ namespace | |||
| 82 | std::lock_guard _guard{ sCallCountsLock }; | 82 | std::lock_guard _guard{ sCallCountsLock }; |
| 83 | sFinalizerHits[L_].test_and_set(); | 83 | sFinalizerHits[L_].test_and_set(); |
| 84 | bool const _allLanesTerminated = lua_toboolean(L_, kIdxTop); | 84 | bool const _allLanesTerminated = lua_toboolean(L_, kIdxTop); |
| 85 | luaG_pushstring(L_, "Finalizer%s", _allLanesTerminated ? "" : ": Uncooperative lanes detected"); | 85 | luaW_pushstring(L_, "Finalizer%s", _allLanesTerminated ? "" : ": Uncooperative lanes detected"); |
| 86 | return 1; | 86 | return 1; |
| 87 | }; | 87 | }; |
| 88 | 88 | ||
| @@ -103,7 +103,7 @@ namespace | |||
| 103 | int luaopen_fixture(lua_State* L_) | 103 | int luaopen_fixture(lua_State* L_) |
| 104 | { | 104 | { |
| 105 | STACK_CHECK_START_REL(L_, 0); | 105 | STACK_CHECK_START_REL(L_, 0); |
| 106 | luaG_newlib<std::size(local::sFixture)>(L_, local::sFixture); // M | 106 | luaW_newlib<std::size(local::sFixture)>(L_, local::sFixture); // M |
| 107 | STACK_CHECK(L_, 1); | 107 | STACK_CHECK(L_, 1); |
| 108 | return 1; | 108 | return 1; |
| 109 | } | 109 | } |
| @@ -246,7 +246,7 @@ LuaError LuaState::doString(std::string_view const& str_) const | |||
| 246 | return _loadErr; | 246 | return _loadErr; |
| 247 | } | 247 | } |
| 248 | LuaError const _callErr{ lua_pcall(L, 0, 1, 0) }; // L: "<msg>"? | 248 | LuaError const _callErr{ lua_pcall(L, 0, 1, 0) }; // L: "<msg>"? |
| 249 | [[maybe_unused]] std::string_view const _out{ luaG_tostring(L, kIdxTop) }; | 249 | [[maybe_unused]] std::string_view const _out{ luaW_tostring(L, kIdxTop) }; |
| 250 | STACK_CHECK(L, 1); | 250 | STACK_CHECK(L, 1); |
| 251 | return _callErr; | 251 | return _callErr; |
| 252 | } | 252 | } |
| @@ -257,8 +257,8 @@ std::string_view LuaState::doStringAndRet(std::string_view const& str_) const | |||
| 257 | { | 257 | { |
| 258 | lua_settop(L, 0); | 258 | lua_settop(L, 0); |
| 259 | if (str_.empty()) { | 259 | if (str_.empty()) { |
| 260 | luaG_pushstring(L, ""); | 260 | luaW_pushstring(L, ""); |
| 261 | return luaG_tostring(L, kIdxTop); | 261 | return luaW_tostring(L, kIdxTop); |
| 262 | } | 262 | } |
| 263 | STACK_CHECK_START_REL(L, 0); | 263 | STACK_CHECK_START_REL(L, 0); |
| 264 | LuaError const _loadErr{ luaL_loadstring(L, str_.data()) }; // L: chunk() | 264 | LuaError const _loadErr{ luaL_loadstring(L, str_.data()) }; // L: chunk() |
| @@ -268,7 +268,7 @@ std::string_view LuaState::doStringAndRet(std::string_view const& str_) const | |||
| 268 | } | 268 | } |
| 269 | [[maybe_unused]] LuaError const _callErr{ lua_pcall(L, 0, 1, 0) }; // L: "<msg>"?|retstring | 269 | [[maybe_unused]] LuaError const _callErr{ lua_pcall(L, 0, 1, 0) }; // L: "<msg>"?|retstring |
| 270 | STACK_CHECK(L, 1); | 270 | STACK_CHECK(L, 1); |
| 271 | return luaG_tostring(L, kIdxTop); | 271 | return luaW_tostring(L, kIdxTop); |
| 272 | } | 272 | } |
| 273 | 273 | ||
| 274 | // ################################################################################################# | 274 | // ################################################################################################# |
| @@ -336,7 +336,7 @@ void LuaState::requireFailure(std::string_view const& script_) | |||
| 336 | { | 336 | { |
| 337 | auto const _result{ doString(script_) }; | 337 | auto const _result{ doString(script_) }; |
| 338 | if (_result == LuaError::OK) { | 338 | if (_result == LuaError::OK) { |
| 339 | WARN(luaG_tostring(L, kIdxTop)); | 339 | WARN(luaW_tostring(L, kIdxTop)); |
| 340 | } | 340 | } |
| 341 | REQUIRE(_result != LuaError::OK); | 341 | REQUIRE(_result != LuaError::OK); |
| 342 | lua_settop(L, 0); | 342 | lua_settop(L, 0); |
| @@ -372,7 +372,7 @@ void LuaState::requireSuccess(std::string_view const& script_) | |||
| 372 | { | 372 | { |
| 373 | auto const _result{ doString(script_) }; | 373 | auto const _result{ doString(script_) }; |
| 374 | if (_result != LuaError::OK) { | 374 | if (_result != LuaError::OK) { |
| 375 | WARN(luaG_tostring(L, kIdxTop)); | 375 | WARN(luaW_tostring(L, kIdxTop)); |
| 376 | } | 376 | } |
| 377 | REQUIRE(_result == LuaError::OK); | 377 | REQUIRE(_result == LuaError::OK); |
| 378 | lua_settop(L, 0); | 378 | lua_settop(L, 0); |
| @@ -384,7 +384,7 @@ void LuaState::requireSuccess(std::filesystem::path const& root_, std::string_vi | |||
| 384 | { | 384 | { |
| 385 | auto const _result{ doFile(root_, path_) }; | 385 | auto const _result{ doFile(root_, path_) }; |
| 386 | if (_result != LuaError::OK) { | 386 | if (_result != LuaError::OK) { |
| 387 | WARN(luaG_tostring(L, kIdxTop)); | 387 | WARN(luaW_tostring(L, kIdxTop)); |
| 388 | } | 388 | } |
| 389 | REQUIRE(_result == LuaError::OK); | 389 | REQUIRE(_result == LuaError::OK); |
| 390 | lua_settop(L, 0); | 390 | lua_settop(L, 0); |
| @@ -407,20 +407,20 @@ TEST_CASE("LuaState.doString") | |||
| 407 | { | 407 | { |
| 408 | LuaState _L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | 408 | LuaState _L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; |
| 409 | // if the script fails to load, we should find the error message at the top of the stack | 409 | // if the script fails to load, we should find the error message at the top of the stack |
| 410 | REQUIRE([&L = _L]() { std::ignore = L.doString("function end"); return lua_gettop(L) == 1 && luaG_type(L, StackIndex{1}) == LuaType::STRING; }()); | 410 | REQUIRE([&L = _L]() { std::ignore = L.doString("function end"); return lua_gettop(L) == 1 && luaW_type(L, StackIndex{1}) == LuaType::STRING; }()); |
| 411 | 411 | ||
| 412 | // if the script runs, the stack should contain its return value | 412 | // if the script runs, the stack should contain its return value |
| 413 | REQUIRE([&L = _L]() { std::ignore = L.doString("return true"); return lua_gettop(L) == 1 && luaG_type(L, StackIndex{1}) == LuaType::BOOLEAN; }()); | 413 | REQUIRE([&L = _L]() { std::ignore = L.doString("return true"); return lua_gettop(L) == 1 && luaW_type(L, StackIndex{1}) == LuaType::BOOLEAN; }()); |
| 414 | REQUIRE([&L = _L]() { std::ignore = L.doString("return 'hello'"); return lua_gettop(L) == 1 && luaG_tostring(L, StackIndex{1}) == "hello"; }()); | 414 | REQUIRE([&L = _L]() { std::ignore = L.doString("return 'hello'"); return lua_gettop(L) == 1 && luaW_tostring(L, StackIndex{1}) == "hello"; }()); |
| 415 | // or nil if it didn't return anything | 415 | // or nil if it didn't return anything |
| 416 | REQUIRE([&L = _L]() { std::ignore = L.doString("return"); return lua_gettop(L) == 1 && luaG_type(L, StackIndex{1}) == LuaType::NIL; }()); | 416 | REQUIRE([&L = _L]() { std::ignore = L.doString("return"); return lua_gettop(L) == 1 && luaW_type(L, StackIndex{1}) == LuaType::NIL; }()); |
| 417 | 417 | ||
| 418 | // on failure, doStringAndRet returns "", and the error message is on the stack | 418 | // on failure, doStringAndRet returns "", and the error message is on the stack |
| 419 | REQUIRE([&L = _L]() { return L.doStringAndRet("function end") == "" && lua_gettop(L) == 1 && luaG_type(L, StackIndex{ 1 }) == LuaType::STRING && luaG_tostring(L, StackIndex{ 1 }) != ""; }()); | 419 | REQUIRE([&L = _L]() { return L.doStringAndRet("function end") == "" && lua_gettop(L) == 1 && luaW_type(L, StackIndex{ 1 }) == LuaType::STRING && luaW_tostring(L, StackIndex{ 1 }) != ""; }()); |
| 420 | // on success doStringAndRet returns the string returned by the script, that is also at the top of the stack | 420 | // on success doStringAndRet returns the string returned by the script, that is also at the top of the stack |
| 421 | REQUIRE([&L = _L]() { return L.doStringAndRet("return 'hello'") == "hello" && lua_gettop(L) == 1 && luaG_type(L, StackIndex{ 1 }) == LuaType::STRING && luaG_tostring(L, StackIndex{ 1 }) == "hello"; }()); | 421 | REQUIRE([&L = _L]() { return L.doStringAndRet("return 'hello'") == "hello" && lua_gettop(L) == 1 && luaW_type(L, StackIndex{ 1 }) == LuaType::STRING && luaW_tostring(L, StackIndex{ 1 }) == "hello"; }()); |
| 422 | // if the returned value is not (convertible to) a string, we should get an empty string out of doStringAndRet | 422 | // if the returned value is not (convertible to) a string, we should get an empty string out of doStringAndRet |
| 423 | REQUIRE([&L = _L]() { return L.doStringAndRet("return function() end") == "" && lua_gettop(L) == 1 && luaG_type(L, StackIndex{ 1 }) == LuaType::FUNCTION && luaG_tostring(L, StackIndex{ 1 }) == ""; }()); | 423 | REQUIRE([&L = _L]() { return L.doStringAndRet("return function() end") == "" && lua_gettop(L) == 1 && luaW_type(L, StackIndex{ 1 }) == LuaType::FUNCTION && luaW_tostring(L, StackIndex{ 1 }) == ""; }()); |
| 424 | } | 424 | } |
| 425 | 425 | ||
| 426 | // ################################################################################################# | 426 | // ################################################################################################# |
| @@ -436,9 +436,9 @@ FileRunner::FileRunner(std::string_view const& where_) | |||
| 436 | // because the VS Test Explorer doesn't appreciate the text output of some scripts, so absorb them | 436 | // because the VS Test Explorer doesn't appreciate the text output of some scripts, so absorb them |
| 437 | if constexpr (1) { | 437 | if constexpr (1) { |
| 438 | auto const _nullprint = +[](lua_State* const L_) { return 0; }; | 438 | auto const _nullprint = +[](lua_State* const L_) { return 0; }; |
| 439 | luaG_pushglobaltable(L); | 439 | luaW_pushglobaltable(L); |
| 440 | lua_pushcfunction(L, _nullprint); | 440 | lua_pushcfunction(L, _nullprint); |
| 441 | luaG_setfield(L, StackIndex{ -2 }, std::string_view{ "print" }); | 441 | luaW_setfield(L, StackIndex{ -2 }, std::string_view{ "print" }); |
| 442 | lua_pop(L, 1); | 442 | lua_pop(L, 1); |
| 443 | stackCheck(0); | 443 | stackCheck(0); |
| 444 | } | 444 | } |
