Scripting: More testing sugar

This commit is contained in:
Vicki Pfau 2022-05-04 21:35:51 -07:00
parent ce3710323b
commit 421c645e14
1 changed files with 13 additions and 33 deletions

View File

@ -7,6 +7,11 @@
#include <mgba/internal/script/lua.h> #include <mgba/internal/script/lua.h>
#define SETUP_LUA \
struct mScriptContext context; \
mScriptContextInit(&context); \
struct mScriptEngineContext* lua = mScriptContextRegisterEngine(&context, mSCRIPT_ENGINE_LUA)
#define LOAD_PROGRAM(PROG) \ #define LOAD_PROGRAM(PROG) \
do { \ do { \
struct VFile* vf = VFileFromConstMemory(PROG, strlen(PROG)); \ struct VFile* vf = VFileFromConstMemory(PROG, strlen(PROG)); \
@ -137,9 +142,7 @@ M_TEST_DEFINE(loadBadSyntax) {
} }
M_TEST_DEFINE(runNop) { M_TEST_DEFINE(runNop) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
LOAD_PROGRAM("return"); LOAD_PROGRAM("return");
assert_true(lua->run(lua)); assert_true(lua->run(lua));
@ -147,14 +150,11 @@ M_TEST_DEFINE(runNop) {
// Make sure we can run it twice // Make sure we can run it twice
assert_true(lua->run(lua)); assert_true(lua->run(lua));
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }
M_TEST_DEFINE(getGlobal) { M_TEST_DEFINE(getGlobal) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
struct mScriptValue a = mSCRIPT_MAKE_S32(1); struct mScriptValue a = mSCRIPT_MAKE_S32(1);
struct mScriptValue* val; struct mScriptValue* val;
@ -198,14 +198,11 @@ M_TEST_DEFINE(getGlobal) {
assert_true(a.type->equal(&a, val)); assert_true(a.type->equal(&a, val));
mScriptValueDeref(val); mScriptValueDeref(val);
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }
M_TEST_DEFINE(setGlobal) { M_TEST_DEFINE(setGlobal) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
struct mScriptValue a = mSCRIPT_MAKE_S32(1); struct mScriptValue a = mSCRIPT_MAKE_S32(1);
struct mScriptValue* val; struct mScriptValue* val;
@ -246,14 +243,11 @@ M_TEST_DEFINE(setGlobal) {
assert_true(a.type->equal(&a, val)); assert_true(a.type->equal(&a, val));
mScriptValueDeref(val); mScriptValueDeref(val);
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }
M_TEST_DEFINE(callLuaFunc) { M_TEST_DEFINE(callLuaFunc) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
struct mScriptValue* fn; struct mScriptValue* fn;
@ -289,14 +283,11 @@ M_TEST_DEFINE(callLuaFunc) {
mScriptFrameDeinit(&frame); mScriptFrameDeinit(&frame);
mScriptValueDeref(fn); mScriptValueDeref(fn);
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }
M_TEST_DEFINE(callCFunc) { M_TEST_DEFINE(callCFunc) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
struct mScriptValue a = mSCRIPT_MAKE_S32(1); struct mScriptValue a = mSCRIPT_MAKE_S32(1);
struct mScriptValue* val; struct mScriptValue* val;
@ -318,14 +309,11 @@ M_TEST_DEFINE(callCFunc) {
assert_true(a.type->equal(&a, val)); assert_true(a.type->equal(&a, val));
mScriptValueDeref(val); mScriptValueDeref(val);
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }
M_TEST_DEFINE(globalStructFieldGet) { M_TEST_DEFINE(globalStructFieldGet) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
struct Test s = { struct Test s = {
.i = 1, .i = 1,
@ -367,15 +355,11 @@ M_TEST_DEFINE(globalStructFieldGet) {
assert_true(b.type->equal(&b, val)); assert_true(b.type->equal(&b, val));
mScriptValueDeref(val); mScriptValueDeref(val);
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }
M_TEST_DEFINE(globalStructFieldSet) { M_TEST_DEFINE(globalStructFieldSet) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
struct Test s = { struct Test s = {
.i = 1, .i = 1,
@ -402,15 +386,12 @@ M_TEST_DEFINE(globalStructFieldSet) {
assert_false(lua->run(lua)); assert_false(lua->run(lua));
assert_int_equal(s.i, 1); assert_int_equal(s.i, 1);
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }
M_TEST_DEFINE(globalStructMethods) { M_TEST_DEFINE(globalStructMethods) {
struct mScriptContext context; SETUP_LUA;
mScriptContextInit(&context);
struct mScriptEngineContext* lua = mSCRIPT_ENGINE_LUA->create(mSCRIPT_ENGINE_LUA, &context);
struct Test s = { struct Test s = {
.i = 1, .i = 1,
@ -532,7 +513,6 @@ M_TEST_DEFINE(globalStructMethods) {
assert_true(b.type->equal(&b, val)); assert_true(b.type->equal(&b, val));
mScriptValueDeref(val); mScriptValueDeref(val);
lua->destroy(lua);
mScriptContextDeinit(&context); mScriptContextDeinit(&context);
} }