2026-05-30 13:48:50 +01:00
|
|
|
#include <gtest/gtest.h>
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
#include "gui/editor/guiInspector.h"
|
2023-09-17 00:35:03 +02:00
|
|
|
#include "gui/editor/inspector/group.h"
|
2026-05-30 13:48:50 +01:00
|
|
|
#include "gui/editor/inspector/field.h"
|
2023-09-17 00:22:44 +02:00
|
|
|
#include "console/script.h"
|
2026-05-30 13:48:50 +01:00
|
|
|
#include "console/simDatablock.h"
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
class InspectorTestData : public SimDataBlock
|
2023-09-17 00:22:44 +02:00
|
|
|
{
|
2026-05-30 13:48:50 +01:00
|
|
|
typedef SimDataBlock Parent;
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
public:
|
|
|
|
|
S32 testInt = 0;
|
|
|
|
|
F32 testFloat = 0.f;
|
|
|
|
|
bool testBool = false;
|
|
|
|
|
StringTableEntry testString;
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
DECLARE_CONOBJECT(InspectorTestData);
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
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));
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
Parent::initPersistFields();
|
|
|
|
|
}
|
|
|
|
|
};
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
IMPLEMENT_CO_DATABLOCK_V1(InspectorTestData);
|
2023-09-17 00:22:44 +02:00
|
|
|
|
2026-05-30 13:48:50 +01:00
|
|
|
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();
|
2023-09-17 00:22:44 +02:00
|
|
|
}
|