Expand Google Test coverage across core subsystems
Add and extend unit tests for: - Task manager (failed tasks, progress signals, multiple tasks) - Undo stack (multiple undo/redo, push-after-undo, clear, multi-command) - Config defaults and graphics backend string conversion - Node keyframe serialization and default state - Node value string round-trips and table operations - Node globals and project settings/serialization - Timeline coordinate, workarea, and marker commands - Color LUT processor and OCIO transform handling - Common utilities (range, file functions, Qt helpers, XML utils) - Render enums (loop mode, alpha association) - Shader resource availability - Module smoke tests for Tool and HumanStrings All tests pass including RenderWorkerFootage GPU worker tests after rebuilding the stale olive-render-worker binary.
This commit is contained in:
@@ -120,3 +120,68 @@ TEST(UndoStack, EmptyMultiUndoCommandIsIgnored)
|
||||
EXPECT_EQ(stack.rowCount(), 1);
|
||||
EXPECT_FALSE(stack.CanUndo());
|
||||
}
|
||||
|
||||
TEST(UndoStack, MultipleUndosAndRedos)
|
||||
{
|
||||
int counter = 0;
|
||||
olive::UndoStack stack;
|
||||
stack.push(new TestCommand(&counter), QStringLiteral("One"));
|
||||
stack.push(new TestCommand(&counter), QStringLiteral("Two"));
|
||||
stack.push(new TestCommand(&counter), QStringLiteral("Three"));
|
||||
EXPECT_EQ(counter, 3);
|
||||
|
||||
stack.undo();
|
||||
stack.undo();
|
||||
EXPECT_EQ(counter, 1);
|
||||
EXPECT_TRUE(stack.CanUndo());
|
||||
EXPECT_TRUE(stack.CanRedo());
|
||||
|
||||
stack.redo();
|
||||
EXPECT_EQ(counter, 2);
|
||||
}
|
||||
|
||||
TEST(UndoStack, PushAfterUndoClearsRedoBranch)
|
||||
{
|
||||
int counter = 0;
|
||||
olive::UndoStack stack;
|
||||
stack.push(new TestCommand(&counter), QStringLiteral("First"));
|
||||
stack.push(new TestCommand(&counter), QStringLiteral("Second"));
|
||||
EXPECT_EQ(counter, 2);
|
||||
|
||||
stack.undo();
|
||||
EXPECT_EQ(counter, 1);
|
||||
|
||||
stack.push(new TestCommand(&counter), QStringLiteral("Third"));
|
||||
EXPECT_EQ(counter, 2);
|
||||
EXPECT_FALSE(stack.CanRedo());
|
||||
}
|
||||
|
||||
TEST(UndoStack, ResetClearsHistory)
|
||||
{
|
||||
int counter = 0;
|
||||
olive::UndoStack stack;
|
||||
stack.push(new TestCommand(&counter), QStringLiteral("Action"));
|
||||
EXPECT_EQ(counter, 1);
|
||||
|
||||
stack.clear();
|
||||
EXPECT_FALSE(stack.CanUndo());
|
||||
EXPECT_FALSE(stack.CanRedo());
|
||||
EXPECT_EQ(stack.rowCount(), 1);
|
||||
}
|
||||
|
||||
TEST(UndoStack, MultiUndoCommandWithChildren)
|
||||
{
|
||||
int counter = 0;
|
||||
olive::UndoStack stack;
|
||||
|
||||
auto *multi = new olive::MultiUndoCommand();
|
||||
multi->add_child(new TestCommand(&counter));
|
||||
multi->add_child(new TestCommand(&counter));
|
||||
stack.push(multi, QStringLiteral("Multi"));
|
||||
|
||||
EXPECT_EQ(counter, 2);
|
||||
stack.undo();
|
||||
EXPECT_EQ(counter, 0);
|
||||
stack.redo();
|
||||
EXPECT_EQ(counter, 2);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user