From b19fc992fb30745d433c3a6393040035af5d2950 Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Fri, 13 Jun 2025 15:34:53 +0200 Subject: [PATCH] Core: Add tests for undo/redo property rename --- tests/src/App/Property.cpp | 72 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/tests/src/App/Property.cpp b/tests/src/App/Property.cpp index 04f3aa8e42..7333909544 100644 --- a/tests/src/App/Property.cpp +++ b/tests/src/App/Property.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -313,3 +314,74 @@ TEST_F(RenameProperty, updateExpressionDifferentDocument) EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop); EXPECT_EQ(prop2->getValue(), Value); } + +// Tests whether we can rename a property and undo it +TEST_F(RenameProperty, undoRenameProperty) +{ + // Arrange + _doc->setUndoMode(1); + + // Act + bool isRenamed = false; + { + App::AutoTransaction transaction("Rename Property"); + isRenamed = varSet->renameDynamicProperty(prop, "NewName"); + } + + // Assert + EXPECT_TRUE(isRenamed); + EXPECT_STREQ(varSet->getPropertyName(prop), "NewName"); + EXPECT_EQ(prop->getValue(), Value); + EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), nullptr); + EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop); + + // Act: Undo the rename + bool undone = _doc->undo(); + + // Assert: The property should be back to its original name and value + EXPECT_TRUE(undone); + EXPECT_STREQ(varSet->getPropertyName(prop), "Variable"); + EXPECT_EQ(prop->getValue(), Value); + EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), prop); + EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), nullptr); +} + + +// Tests whether we can rename a property, undo, and redo it +TEST_F(RenameProperty, redoRenameProperty) +{ + // Arrange + _doc->setUndoMode(1); + + // Act + bool isRenamed = false; + { + App::AutoTransaction transaction("Rename Property"); + isRenamed = varSet->renameDynamicProperty(prop, "NewName"); + } + + // Assert + EXPECT_TRUE(isRenamed); + EXPECT_STREQ(varSet->getPropertyName(prop), "NewName"); + EXPECT_EQ(prop->getValue(), Value); + EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), nullptr); + EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop); + + // Act: Undo the rename + bool undone = _doc->undo(); + + // Assert: The property should be back to its original name and value + EXPECT_TRUE(undone); + EXPECT_STREQ(varSet->getPropertyName(prop), "Variable"); + EXPECT_EQ(prop->getValue(), Value); + EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), prop); + EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), nullptr); + + // Act: Redo the rename + bool redone = _doc->redo(); + EXPECT_TRUE(redone); + EXPECT_STREQ(varSet->getPropertyName(prop), "NewName"); + EXPECT_EQ(prop->getValue(), Value); + EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), nullptr); + EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop); +}