mudlet/test/TLuaInterfaceTest.cpp
Chris Mitchell 9f23e99e00
Add tests for variable interface (#5141)
* Cleanup

* Fix settings for linux override

* Fix debug mode

* Commit env template

* Reduce default core count

* Some initial work on lua interface tests

* Fix lua tests

* Fix import in lua interface

* Fix lua state reference

* Fix tests

* Validate var name is correct

* Update includes

* Some lint fixes

* Remove unused code

* Add copyright bit

* lint fix

* nolint
2021-04-17 14:48:23 -04:00

84 lines
2.9 KiB
C++

/***************************************************************************
* 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>
extern "C" {
#include <lauxlib.h>
#include <lua.h>
#include <lualib.h>
}
class TVarTest : public QObject {
Q_OBJECT
private:
lua_State* L = luaL_newstate();
LuaInterface* interface = new LuaInterface(L);
private slots: // NOLINT(readability-redundant-access-specifiers)
void init()
{
L = luaL_newstate();
interface = new LuaInterface(L);
}
void cleanup() {
lua_close(L);
}
void execLua(const QString& string) {
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)