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()