diff --git a/tests/auto/diff/differ/tst_differ.cpp b/tests/auto/diff/differ/tst_differ.cpp index 4caa1053f877ef03d931948e83466d3d1578709a..d55ba60b56d2f3143977bb24fed138a7edd02979 100644 --- a/tests/auto/diff/differ/tst_differ.cpp +++ b/tests/auto/diff/differ/tst_differ.cpp @@ -600,6 +600,55 @@ void tst_Differ::cleanupSemantics_data() << Diff(Diff::Delete, QString("S")) << Diff(Diff::Equal, QString("TU")) << Diff(Diff::Insert, QString("VW"))); + // All ambiguous tests below should return the same result, but they don't. + QTest::newRow("Ambiguous 1") + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W ")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString("Z")) + << Diff(Diff::Equal, QString("B"))) + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W ")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString("Z")) + << Diff(Diff::Equal, QString("B"))); + QTest::newRow("Ambiguous 2") + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W ")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString(" Z")) + << Diff(Diff::Equal, QString("B"))) + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X Y")) + << Diff(Diff::Insert, QString("W Z")) + << Diff(Diff::Equal, QString("B"))); + QTest::newRow("Ambiguous 3") + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString(" Z")) + << Diff(Diff::Equal, QString("B"))) + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString(" Z")) + << Diff(Diff::Equal, QString("B"))); } void tst_Differ::cleanupSemantics() @@ -690,6 +739,58 @@ void tst_Differ::cleanupSemanticsLossless_data() << Diff(Diff::Equal, QString("That ")) << Diff(Diff::Insert, QString("cat ")) << Diff(Diff::Equal, QString("cartoon"))); + // All ambiguous tests below should return the same result, but they don't. + QTest::newRow("Ambiguous 1") + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W ")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString("Z")) + << Diff(Diff::Equal, QString("B"))) + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W ")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString("Z")) + << Diff(Diff::Equal, QString("B"))); + QTest::newRow("Ambiguous 2") + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W ")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString(" Z")) + << Diff(Diff::Equal, QString("B"))) + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W ")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString(" Z")) + << Diff(Diff::Equal, QString("B"))); + QTest::newRow("Ambiguous 3") + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString(" Z")) + << Diff(Diff::Equal, QString("B"))) + << (QList<Diff>() + << Diff(Diff::Equal, QString("A")) + << Diff(Diff::Delete, QString("X")) + << Diff(Diff::Insert, QString("W")) + << Diff(Diff::Equal, QString(" ")) + << Diff(Diff::Delete, QString("Y")) + << Diff(Diff::Insert, QString(" Z")) + << Diff(Diff::Equal, QString("B"))); } void tst_Differ::cleanupSemanticsLossless()