goo/GooString.cc | 2 +- qt4/tests/check_goostring.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-)
New commits: commit 55940e989701eb9118015e30f4f48eb654fa34c4 Author: Pino Toscano <[email protected]> Date: Tue Nov 27 16:05:15 2012 +0100 fix my previous GooString::insert fix we need only to move the characters after the specified position, not all of them extend qt4's check_goostring with few more checks covering this (and the previous) fix diff --git a/goo/GooString.cc b/goo/GooString.cc index e52380e..d35161d 100644 --- a/goo/GooString.cc +++ b/goo/GooString.cc @@ -775,7 +775,7 @@ GooString *GooString::insert(int i, const char *str, int lengthA) { lengthA = strlen(str); resize(length + lengthA); - memmove(s+i+lengthA, s+i, prevLen); + memmove(s+i+lengthA, s+i, prevLen-i); memcpy(s+i, str, lengthA); return this; } diff --git a/qt4/tests/check_goostring.cpp b/qt4/tests/check_goostring.cpp index 41c28d3..97f246d 100644 --- a/qt4/tests/check_goostring.cpp +++ b/qt4/tests/check_goostring.cpp @@ -6,15 +6,54 @@ class TestGooString : public QObject { Q_OBJECT private slots: + void testInsertData_data(); + void testInsertData(); void testInsert(); }; +void TestGooString::testInsertData_data() +{ + QTest::addColumn<QByteArray>("string"); + QTest::addColumn<QByteArray>("addition"); + QTest::addColumn<int>("position"); + QTest::addColumn<QByteArray>("result"); + + QTest::newRow("foo") << QByteArray("foo") << QByteArray("bar") << 0 << QByteArray("barfoo"); + QTest::newRow("<empty>") << QByteArray() << QByteArray("bar") << 0 << QByteArray("bar"); + QTest::newRow("foo+bar #1") << QByteArray("f+bar") << QByteArray("oo") << 1 << QByteArray("foo+bar"); + QTest::newRow("foo+bar #2") << QByteArray("fobar") << QByteArray("o+") << 2 << QByteArray("foo+bar"); + QTest::newRow("foo+bar #last") << QByteArray("foo+r") << QByteArray("ba") << 4 << QByteArray("foo+bar"); + QTest::newRow("foo+bar #end") << QByteArray("foo+") << QByteArray("bar") << 4 << QByteArray("foo+bar"); + QTest::newRow("long #start") << QByteArray("very string") << QByteArray("long long long long long ") << 5 << QByteArray("very long long long long long string"); +} + +void TestGooString::testInsertData() +{ + QFETCH(QByteArray, string); + QFETCH(QByteArray, addition); + QFETCH(int, position); + QFETCH(QByteArray, result); + + GooString goo(string.constData()); + QCOMPARE(goo.getCString(), string.constData()); + goo.insert(position, addition.constData()); + QCOMPARE(goo.getCString(), result.constData()); +} + void TestGooString::testInsert() { + { GooString goo; goo.insert(0, "."); goo.insert(0, "This is a very long long test string"); QCOMPARE(goo.getCString(), "This is a very long long test string."); + } + { + GooString goo; + goo.insert(0, "second-part-third-part"); + goo.insert(0, "first-part-"); + QCOMPARE(goo.getCString(), "first-part-second-part-third-part"); + } } QTEST_MAIN(TestGooString) _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
