Core: Add tests for undo/redo property rename
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include <Base/Interpreter.h>
|
||||
|
||||
#include <App/Application.h>
|
||||
#include <App/AutoTransaction.h>
|
||||
#include <App/Document.h>
|
||||
#include <App/Expression.h>
|
||||
#include <App/ObjectIdentifier.h>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user