Torque3D/Engine/source/testing/inspectorFieldTest.cpp
marauder2k7 4017c3a21d initial changes
should be longer build time on this pr as it is rebuilding the engine twice, will begin removing unnecessary files and possibly removing the preproc so the unit tests could use the same result as the engine build.
2026-05-31 17:38:31 +01:00

132 lines
3.2 KiB
C++

#include <gtest/gtest.h>
#include "gui/editor/guiInspector.h"
#include "gui/editor/inspector/group.h"
#include "gui/editor/inspector/field.h"
#include "console/script.h"
#include "console/simDatablock.h"
class InspectorTestData : public SimDataBlock
{
typedef SimDataBlock Parent;
public:
S32 testInt = 0;
F32 testFloat = 0.f;
bool testBool = false;
StringTableEntry testString;
DECLARE_CONOBJECT(InspectorTestData);
static void initPersistFields()
{
addField("testInt", TypeS32, Offset(testInt, InspectorTestData));
addField("testFloat", TypeF32, Offset(testFloat, InspectorTestData));
addField("testBool", TypeBool, Offset(testBool, InspectorTestData));
addField("testString", TypeString, Offset(testString, InspectorTestData));
Parent::initPersistFields();
}
};
IMPLEMENT_CO_DATABLOCK_V1(InspectorTestData);
class GuiInspectorFieldFixture : public ::testing::Test
{
protected:
GuiInspector* inspector{};
GuiInspectorGroup* group{};
void SetUp() override
{
inspector = new GuiInspector();
ASSERT_TRUE(inspector->registerObject());
group = new GuiInspectorGroup("testing", nullptr);
ASSERT_TRUE(group->registerObject());
}
void TearDown() override
{
group->deleteObject();
inspector->deleteObject();
}
GuiInspectorField* createField(
SimObject* object,
const char* fieldName)
{
inspector->addInspectObject(object);
AbstractClassRep::Field* field =
const_cast<AbstractClassRep::Field*>(
object->findField(StringTable->insert(fieldName)));
EXPECT_NE(field, nullptr);
GuiInspectorField* inspectorField = new GuiInspectorField(inspector, group, field);
EXPECT_TRUE(inspectorField->registerObject());
return inspectorField;
}
};
TEST_F(GuiInspectorFieldFixture, SetData_IntField)
{
InspectorTestData* object = new InspectorTestData();
ASSERT_TRUE(object->registerObject());
GuiInspectorField* field = createField(object, "testInt");
field->setData("12345");
EXPECT_EQ(object->testInt, 12345);
field->deleteObject();
object->deleteObject();
}
TEST_F(GuiInspectorFieldFixture, SetData_FloatField)
{
InspectorTestData* object = new InspectorTestData();
ASSERT_TRUE(object->registerObject());
GuiInspectorField* field = createField(object, "testFloat");
field->setData("123.5");
EXPECT_FLOAT_EQ(object->testFloat, 123.5f);
field->deleteObject();
object->deleteObject();
}
TEST_F(GuiInspectorFieldFixture, SetData_BoolField)
{
InspectorTestData* object = new InspectorTestData();
ASSERT_TRUE(object->registerObject());
GuiInspectorField* field = createField(object, "testBool");
field->setData("1");
EXPECT_TRUE(object->testBool);
field->deleteObject();
object->deleteObject();
}
TEST_F(GuiInspectorFieldFixture, SetData_StringField)
{
InspectorTestData* object = new InspectorTestData();
ASSERT_TRUE(object->registerObject());
GuiInspectorField* field = createField(object, "testString");
field->setData("Hello World");
EXPECT_STREQ(object->testString, "Hello World");
field->deleteObject();
object->deleteObject();
}