undo: wrapped redo/undo functions to ensure prepare is called

This commit is contained in:
itsmattkc
2021-07-17 00:14:24 -07:00
parent 84e639606f
commit 52c5617159
29 changed files with 174 additions and 103 deletions
+30 -30
View File
@@ -135,14 +135,14 @@ OLIVE_ADD_TEST(Trim)
{
// Trim out point of second block
BlockTrimCommand command(track, block2, 1, Timeline::kTrimOut);
command.redo();
command.redo_now();
// No block should have been added
OLIVE_ASSERT(track->Blocks().size() == 2);
OLIVE_ASSERT(block2->length() == 1);
OLIVE_ASSERT(block1->length() == 2);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 2);
OLIVE_ASSERT(block2->length() == 2);
@@ -152,7 +152,7 @@ OLIVE_ADD_TEST(Trim)
{
// Trim in point of second block
BlockTrimCommand command(track, block2, 1, Timeline::kTrimIn);
command.redo();
command.redo_now();
// Gap should be inserted in between
OLIVE_ASSERT(track->Blocks().size() == 3);
@@ -164,7 +164,7 @@ OLIVE_ADD_TEST(Trim)
OLIVE_ASSERT(block1->next() == gap);
OLIVE_ASSERT(block2->previous() == gap);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 2);
OLIVE_ASSERT(block2->length() == 2);
@@ -174,7 +174,7 @@ OLIVE_ADD_TEST(Trim)
{
// Trim out point of first block
BlockTrimCommand command(track, block1, 1, Timeline::kTrimOut);
command.redo();
command.redo_now();
// Gap should be inserted in between
OLIVE_ASSERT(track->Blocks().size() == 3);
@@ -186,7 +186,7 @@ OLIVE_ADD_TEST(Trim)
OLIVE_ASSERT(block1->next() == gap);
OLIVE_ASSERT(block2->previous() == gap);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 2);
OLIVE_ASSERT(block2->length() == 2);
@@ -196,7 +196,7 @@ OLIVE_ADD_TEST(Trim)
{
// Trim in point of first block
BlockTrimCommand command(track, block1, 1, Timeline::kTrimIn);
command.redo();
command.redo_now();
// Gap should be prepended to the start
OLIVE_ASSERT(track->Blocks().size() == 3);
@@ -208,7 +208,7 @@ OLIVE_ADD_TEST(Trim)
OLIVE_ASSERT(block1->next() == block2);
OLIVE_ASSERT(block1->previous() == gap);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 2);
OLIVE_ASSERT(block2->length() == 2);
@@ -241,7 +241,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsOnly)
{
// Replace clip C with a gap
TrackReplaceBlockWithGapCommand command(track, c);
command.redo();
command.redo_now();
// Clip should be removed without any gap actually taking its place, since the clip is at the
// end of the track
@@ -249,7 +249,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsOnly)
OLIVE_ASSERT(track->Blocks().at(0) == a);
OLIVE_ASSERT(track->Blocks().at(1) == b);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 3);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -260,7 +260,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsOnly)
{
// Replace clip B with a gap
TrackReplaceBlockWithGapCommand command(track, b);
command.redo();
command.redo_now();
// B should be replaced with a gap
OLIVE_ASSERT(track->Blocks().size() == 3);
@@ -270,7 +270,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsOnly)
OLIVE_ASSERT(track->Blocks().at(1)->length() == b->length());
OLIVE_ASSERT(track->Blocks().at(2) == c);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 3);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -312,7 +312,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
{
// Replace clip E with a gap
TrackReplaceBlockWithGapCommand command(track, e);
command.redo();
command.redo_now();
// Both clips D and E should be removed because this command should remove any trailing gaps
OLIVE_ASSERT(track->Blocks().size() == 3);
@@ -321,7 +321,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
OLIVE_ASSERT(track->Blocks().at(2) == c);
// Test undo
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 5);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -337,7 +337,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
rational original_length_of_b = b->length();
TrackReplaceBlockWithGapCommand command(track, a);
command.redo();
command.redo_now();
// A should be removed and B should take its place
OLIVE_ASSERT(track->Blocks().size() == 4);
@@ -349,7 +349,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
OLIVE_ASSERT(b->length() == original_length_of_a + original_length_of_b);
// Test undo
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 5);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -368,7 +368,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
rational original_length_of_d = d->length();
TrackReplaceBlockWithGapCommand command(track, c);
command.redo();
command.redo_now();
// C and D should be removed, and B should take both of their places
OLIVE_ASSERT(track->Blocks().size() == 3);
@@ -378,7 +378,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
OLIVE_ASSERT(b->length() == original_length_of_b + original_length_of_c + original_length_of_d);
// Test undo
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 5);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -401,7 +401,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
TrackReplaceBlockWithGapCommand command(track, e);
rational original_length_of_d = d->length();
rational original_length_of_e = e->length();
command.redo();
command.redo_now();
// E should be removed and D should have taken its place
OLIVE_ASSERT(track->Blocks().size() == 5);
@@ -412,7 +412,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndGaps)
OLIVE_ASSERT(track->Blocks().at(4) == f);
OLIVE_ASSERT(d->length() == original_length_of_d + original_length_of_e);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 6);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -466,7 +466,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndTransitions)
{
// Replace A with gap
TrackReplaceBlockWithGapCommand command(track, a);
command.redo();
command.redo_now();
// A should be replaced with a gap and so should A_IN since A was the only clip connected to it.
// Also A_TO_B should only be connected to B now
@@ -476,7 +476,7 @@ OLIVE_ADD_TEST(ReplaceBlockWithGap_ClipsAndTransitions)
OLIVE_ASSERT(track->Blocks().at(2) == b);
OLIVE_ASSERT(track->Blocks().at(3) == b_out);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 5);
OLIVE_ASSERT(track->Blocks().at(0) == a_in);
@@ -518,7 +518,7 @@ OLIVE_ADD_TEST(InsertGaps_SingleTrack)
{
// Insert gap at the start of the track, all blocks should be unsplit and shifted to the right
TrackListInsertGaps command(list, 0, 2);
command.redo();
command.redo_now();
OLIVE_ASSERT(track->Blocks().size() == 4);
OLIVE_ASSERT(dynamic_cast<GapBlock *>(track->Blocks().at(0)));
@@ -527,7 +527,7 @@ OLIVE_ADD_TEST(InsertGaps_SingleTrack)
OLIVE_ASSERT(track->Blocks().at(2) == b);
OLIVE_ASSERT(track->Blocks().at(3) == c);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 3);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -538,7 +538,7 @@ OLIVE_ADD_TEST(InsertGaps_SingleTrack)
{
// Insert gap in the middle of block A, block A should be halved with a copy at 2 and the gap at 1
TrackListInsertGaps command(list, rational(1, 2), 2);
command.redo();
command.redo_now();
OLIVE_ASSERT(track->Blocks().size() == 5);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -548,7 +548,7 @@ OLIVE_ADD_TEST(InsertGaps_SingleTrack)
OLIVE_ASSERT(track->Blocks().at(3) == b);
OLIVE_ASSERT(track->Blocks().at(4) == c);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 3);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -560,7 +560,7 @@ OLIVE_ADD_TEST(InsertGaps_SingleTrack)
{
// Insert gap between block A and B, blocks should be unsplit with a gap at 1
TrackListInsertGaps command(list, 1, 2);
command.redo();
command.redo_now();
OLIVE_ASSERT(track->Blocks().size() == 4);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -568,7 +568,7 @@ OLIVE_ADD_TEST(InsertGaps_SingleTrack)
OLIVE_ASSERT(track->Blocks().at(2) == b);
OLIVE_ASSERT(track->Blocks().at(3) == c);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 3);
OLIVE_ASSERT(track->Blocks().at(0) == a);
@@ -579,14 +579,14 @@ OLIVE_ADD_TEST(InsertGaps_SingleTrack)
{
// Insert gap at end, nothing should be added
TrackListInsertGaps command(list, 3, 2);
command.redo();
command.redo_now();
OLIVE_ASSERT(track->Blocks().size() == 3);
OLIVE_ASSERT(track->Blocks().at(0) == a);
OLIVE_ASSERT(track->Blocks().at(1) == b);
OLIVE_ASSERT(track->Blocks().at(2) == c);
command.undo();
command.undo_now();
OLIVE_ASSERT(track->Blocks().size() == 3);
OLIVE_ASSERT(track->Blocks().at(0) == a);