From 6de2b455c45782429abdea90407beb416e81d121 Mon Sep 17 00:00:00 2001 From: Lukas Aldershaab Date: Sun, 17 Sep 2023 00:22:44 +0200 Subject: [PATCH 1/4] Fix evaluatef argument handling and add regression test --- Engine/source/console/script.h | 7 ++-- .../source/console/torquescript/runtime.cpp | 2 +- Engine/source/testing/inspectorFieldTest.cpp | 34 +++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 Engine/source/testing/inspectorFieldTest.cpp diff --git a/Engine/source/console/script.h b/Engine/source/console/script.h index ded8acca6..89f290e09 100644 --- a/Engine/source/console/script.h +++ b/Engine/source/console/script.h @@ -50,10 +50,13 @@ namespace Con /// NOTE: This function restores the console stack on return. inline EvalResult evaluatef(const char* string, ...) { + char buffer[4096]; va_list args; - va_start(args, string); - EvalResult result = setLastEvalResult(getRuntime()->evaluatef(string, args)); + va_start(args, &string); + dVsprintf(buffer, sizeof(buffer), string, args); va_end(args); + + EvalResult result = setLastEvalResult(getRuntime()->evaluate(buffer)); return result; }; diff --git a/Engine/source/console/torquescript/runtime.cpp b/Engine/source/console/torquescript/runtime.cpp index f0064f152..1e13b4989 100644 --- a/Engine/source/console/torquescript/runtime.cpp +++ b/Engine/source/console/torquescript/runtime.cpp @@ -97,7 +97,7 @@ namespace TorqueScript { char buffer[4096]; va_list args; - va_start(args, string); + va_start(args, &string); dVsprintf(buffer, sizeof(buffer), string, args); va_end(args); return evaluate(buffer); diff --git a/Engine/source/testing/inspectorFieldTest.cpp b/Engine/source/testing/inspectorFieldTest.cpp new file mode 100644 index 000000000..cadcfb119 --- /dev/null +++ b/Engine/source/testing/inspectorFieldTest.cpp @@ -0,0 +1,34 @@ +#include +#include + +#include "console/script.h" +#include "T3D/fx/particle.h" +#include "T3D/gameBase/gameBase.h" + +TEST(InspectoreFieldTest, Datablocks_Can_Be_Overridden) +{ + GuiInspector* inspector = new GuiInspector(); + inspector->registerObject(); + + ParticleData* exampleObj = new ParticleData(); + exampleObj->registerObject(); + // Add it to inspector so inspector field can find it + inspector->addInspectObject(exampleObj); + + AbstractClassRep::Field* field = const_cast(exampleObj->findField(StringTable->insert("lifetimeMS"))); + + GuiInspectorGroup* group = new GuiInspectorGroup("testing", NULL); + ASSERT_TRUE(group->registerObject()); + + GuiInspectorField* inspectorField = new GuiInspectorField(inspector, group, field); + ASSERT_TRUE(inspectorField->registerObject()); + + inspectorField->setData("12345"); + EXPECT_EQ(exampleObj->lifetimeMS, 12345); + + // Cleanup + inspectorField->deleteObject(); + group->deleteObject(); + inspector->deleteObject(); + exampleObj->deleteObject(); +} From 24f8e6ff87de4f61720ebf0b33269038dc158977 Mon Sep 17 00:00:00 2001 From: Lukas Aldershaab Date: Sun, 17 Sep 2023 00:28:23 +0200 Subject: [PATCH 2/4] Update InspectorField test name --- Engine/source/testing/inspectorFieldTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/testing/inspectorFieldTest.cpp b/Engine/source/testing/inspectorFieldTest.cpp index cadcfb119..fd3cd9bff 100644 --- a/Engine/source/testing/inspectorFieldTest.cpp +++ b/Engine/source/testing/inspectorFieldTest.cpp @@ -5,7 +5,7 @@ #include "T3D/fx/particle.h" #include "T3D/gameBase/gameBase.h" -TEST(InspectoreFieldTest, Datablocks_Can_Be_Overridden) +TEST(InspectorFieldTest, SetData_Should_Update_The_Field) { GuiInspector* inspector = new GuiInspector(); inspector->registerObject(); From 7c46789a9ef515fc38f29df0df04be3ae0509e3c Mon Sep 17 00:00:00 2001 From: Lukas Aldershaab Date: Sun, 17 Sep 2023 00:30:40 +0200 Subject: [PATCH 3/4] Add assertions around registerObjects --- Engine/source/testing/inspectorFieldTest.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Engine/source/testing/inspectorFieldTest.cpp b/Engine/source/testing/inspectorFieldTest.cpp index fd3cd9bff..56bba875d 100644 --- a/Engine/source/testing/inspectorFieldTest.cpp +++ b/Engine/source/testing/inspectorFieldTest.cpp @@ -8,10 +8,10 @@ TEST(InspectorFieldTest, SetData_Should_Update_The_Field) { GuiInspector* inspector = new GuiInspector(); - inspector->registerObject(); + ASSERT_TRUE(inspector->registerObject()); ParticleData* exampleObj = new ParticleData(); - exampleObj->registerObject(); + ASSERT_TRUE(exampleObj->registerObject()); // Add it to inspector so inspector field can find it inspector->addInspectObject(exampleObj); From 09befb1e3b6f01d2f03d6904746e35913a0ae160 Mon Sep 17 00:00:00 2001 From: Lukas Aldershaab Date: Sun, 17 Sep 2023 00:35:03 +0200 Subject: [PATCH 4/4] Cleanup includes --- Engine/source/testing/inspectorFieldTest.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Engine/source/testing/inspectorFieldTest.cpp b/Engine/source/testing/inspectorFieldTest.cpp index 56bba875d..292099469 100644 --- a/Engine/source/testing/inspectorFieldTest.cpp +++ b/Engine/source/testing/inspectorFieldTest.cpp @@ -1,9 +1,8 @@ #include -#include +#include "gui/editor/inspector/group.h" #include "console/script.h" #include "T3D/fx/particle.h" -#include "T3D/gameBase/gameBase.h" TEST(InspectorFieldTest, SetData_Should_Update_The_Field) {