2021-04-17 14:48:23 -04:00
|
|
|
/***************************************************************************
|
|
|
|
|
* Copyright (C) 2021 by Chris Mitchell - chrismit7@gmail.com *
|
|
|
|
|
* *
|
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
|
* (at your option) any later version. *
|
|
|
|
|
* *
|
|
|
|
|
* This program is distributed in the hope that it will be useful, *
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
|
|
|
* GNU General Public License for more details. *
|
|
|
|
|
* *
|
|
|
|
|
* You should have received a copy of the GNU General Public License *
|
|
|
|
|
* along with this program; if not, write to the *
|
|
|
|
|
* Free Software Foundation, Inc., *
|
|
|
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
|
|
#include <LuaInterface.h>
|
|
|
|
|
#include <TVar.h>
|
|
|
|
|
#include <VarUnit.h>
|
|
|
|
|
#include <QtTest/QtTest>
|
|
|
|
|
|
2026-07-29 13:45:22 +02:00
|
|
|
#include <memory>
|
|
|
|
|
|
2021-04-17 14:48:23 -04:00
|
|
|
extern "C" {
|
2025-05-17 22:34:05 +01:00
|
|
|
#if defined(INCLUDE_VERSIONED_LUA_HEADERS)
|
|
|
|
|
#include <lua5.1/lauxlib.h>
|
|
|
|
|
#include <lua5.1/lua.h>
|
|
|
|
|
#include <lua5.1/lualib.h>
|
|
|
|
|
#else
|
|
|
|
|
#include <lauxlib.h>
|
|
|
|
|
#include <lua.h>
|
|
|
|
|
#include <lualib.h>
|
|
|
|
|
#endif
|
2021-04-17 14:48:23 -04:00
|
|
|
}
|
|
|
|
|
|
2025-05-17 22:34:05 +01:00
|
|
|
|
2026-07-29 13:45:22 +02:00
|
|
|
class TVarTest : public QObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
2021-04-17 14:48:23 -04:00
|
|
|
|
|
|
|
|
private:
|
2026-07-29 13:45:22 +02:00
|
|
|
lua_State* L = nullptr;
|
|
|
|
|
std::unique_ptr<LuaInterface> interface;
|
2021-04-17 14:48:23 -04:00
|
|
|
|
|
|
|
|
private slots: // NOLINT(readability-redundant-access-specifiers)
|
|
|
|
|
|
|
|
|
|
void init()
|
|
|
|
|
{
|
|
|
|
|
L = luaL_newstate();
|
2026-07-29 13:45:22 +02:00
|
|
|
interface = std::make_unique<LuaInterface>(L);
|
2021-04-17 14:48:23 -04:00
|
|
|
}
|
|
|
|
|
|
2026-07-29 13:45:22 +02:00
|
|
|
void cleanup()
|
|
|
|
|
{
|
|
|
|
|
interface.reset();
|
2021-04-17 14:48:23 -04:00
|
|
|
lua_close(L);
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-29 13:45:22 +02:00
|
|
|
void execLua(const QString& string)
|
|
|
|
|
{
|
2021-04-17 14:48:23 -04:00
|
|
|
luaL_loadstring(L, string.toUtf8().constData());
|
|
|
|
|
lua_pcall(L, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void testRetrieveStrings()
|
|
|
|
|
{
|
|
|
|
|
execLua("test = '1'");
|
|
|
|
|
interface->getVars(false);
|
|
|
|
|
VarUnit* vu = interface->getVarUnit();
|
|
|
|
|
TVar* base = vu->getBase();
|
|
|
|
|
QList<TVar*> children = base->getChildren();
|
|
|
|
|
TVar* testVar = children.first();
|
|
|
|
|
QCOMPARE(testVar->getName(), "test");
|
|
|
|
|
QCOMPARE(testVar->getValue(), "1");
|
|
|
|
|
QCOMPARE(testVar->getValueType(), LUA_TSTRING);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void testRetrieveNumber()
|
|
|
|
|
{
|
|
|
|
|
execLua("test = 1");
|
|
|
|
|
interface->getVars(false);
|
|
|
|
|
VarUnit* vu = interface->getVarUnit();
|
|
|
|
|
TVar* base = vu->getBase();
|
|
|
|
|
QList<TVar*> children = base->getChildren();
|
|
|
|
|
TVar* testVar = children.first();
|
|
|
|
|
QCOMPARE(testVar->getName(), "test");
|
|
|
|
|
QCOMPARE(testVar->getValue(), "1");
|
|
|
|
|
QCOMPARE(testVar->getValueType(), LUA_TNUMBER);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#include "TLuaInterfaceTest.moc"
|
|
|
|
|
QTEST_MAIN(TVarTest)
|