Fix Issue 7: Cell string misplacement when rich text exist

A private class RichString has been added. More work is needed
This commit is contained in:
Debao Zhang
2013-11-18 11:52:10 +08:00
parent d0cb3e6301
commit 00350d4251
16 changed files with 496 additions and 41 deletions
+2 -1
View File
@@ -9,4 +9,5 @@ SUBDIRS=\
document \
sharedstrings \
styles \
format
format \
richstring
+12
View File
@@ -0,0 +1,12 @@
QT += testlib xlsx xlsx-private
CONFIG += testcase
DEFINES += XLSX_TEST
TARGET = tst_richstringtest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += tst_richstringtest.cpp
DEFINES += SRCDIR=\\\"$$PWD/\\\"
@@ -0,0 +1,41 @@
#include "private/xlsxrichstring_p.h"
#include <QtTest>
#include <QDebug>
class RichstringTest : public QObject
{
Q_OBJECT
public:
RichstringTest();
private Q_SLOTS:
void testEqual();
};
RichstringTest::RichstringTest()
{
}
void RichstringTest::testEqual()
{
QXlsx::RichString rs;
rs.addFragment("Hello", 0);
rs.addFragment(" RichText", 0);
QXlsx::RichString rs2;
rs2.addFragment("Hello", 0);
rs2.addFragment(" Qt!", 0);
QXlsx::RichString rs3;
rs3.addFragment("Hello", 0);
rs3.addFragment(" Qt!", 0);
QVERIFY2(rs2 != rs, "Failure");
QVERIFY2(rs2 == rs3, "Failure");
QVERIFY2(rs2 != QStringLiteral("Hello Qt!"), "Failure");
}
QTEST_APPLESS_MAIN(RichstringTest)
#include "tst_richstringtest.moc"
@@ -1,4 +1,5 @@
#include "private/xlsxsharedstrings_p.h"
#include "private/xlsxrichstring_p.h"
#include <QString>
#include <QtTest>
#include <QXmlStreamReader>
@@ -27,6 +28,19 @@ void SharedStringsTest::testAddSharedString()
QXlsx::SharedStrings sst;
sst.addSharedString("Hello Qt!");
sst.addSharedString("Xlsx Writer");
QXlsx::RichString rs;
rs.addFragment("Hello", 0);
rs.addFragment(" RichText", 0);
sst.addSharedString(rs);
for (int i=0; i<3; ++i) {
QXlsx::RichString rs2;
rs2.addFragment("Hello", 0);
rs2.addFragment(" Qt!", 0);
sst.addSharedString(rs2);
}
sst.addSharedString("Hello World");
sst.addSharedString("Hello Qt!");
@@ -46,8 +60,8 @@ void SharedStringsTest::testAddSharedString()
}
}
QCOMPARE(count, 4);
QCOMPARE(uniqueCount, 3);
QCOMPARE(count, 8);
QCOMPARE(uniqueCount, 5);
}
void SharedStringsTest::testRemoveSharedString()
@@ -88,6 +102,17 @@ void SharedStringsTest::testLoadXmlData()
QXlsx::SharedStrings sst;
sst.addSharedString("Hello Qt!");
sst.addSharedString("Xlsx Writer");
QXlsx::RichString rs;
rs.addFragment("Hello", 0);
rs.addFragment(" RichText", 0);
sst.addSharedString(rs);
for (int i=0; i<3; ++i) {
QXlsx::RichString rs2;
rs2.addFragment("Hello", 0);
rs2.addFragment(" Qt!", 0);
sst.addSharedString(rs2);
}
sst.addSharedString("Hello World");
sst.addSharedString("Hello Qt!");
QByteArray xmlData = sst.saveToXmlData();
@@ -95,10 +120,11 @@ void SharedStringsTest::testLoadXmlData()
QSharedPointer<QXlsx::SharedStrings> sst2(new QXlsx::SharedStrings);
sst2->loadFromXmlData(xmlData);
QCOMPARE(sst2->getSharedString(0), QStringLiteral("Hello Qt!"));
QCOMPARE(sst2->getSharedString(2), QStringLiteral("Hello World"));
QCOMPARE(sst2->getSharedString(0).toPlainString(), QStringLiteral("Hello Qt!"));
QCOMPARE(sst2->getSharedString(2), rs);
QCOMPARE(sst2->getSharedString(4).toPlainString(), QStringLiteral("Hello World"));
QCOMPARE(sst2->getSharedStringIndex("Hello Qt!"), 0);
QCOMPARE(sst2->getSharedStringIndex("Hello World"), 2);
QCOMPARE(sst2->getSharedStringIndex("Hello World"), 4);
}
QTEST_APPLESS_MAIN(SharedStringsTest)
+7 -6
View File
@@ -8,6 +8,7 @@
#include "private/xlsxworksheet_p.h"
#include "private/xlsxxmlreader_p.h"
#include "private/xlsxsharedstrings_p.h"
#include "private/xlsxrichstring_p.h"
class WorksheetTest : public QObject
{
@@ -116,7 +117,7 @@ void WorksheetTest::testWriteCells()
QVERIFY2(xmldata.contains("<c r=\"A5\" t=\"str\"><f>44+33</f><v>0</v></c>"), "formula");
QVERIFY2(xmldata.contains("<c r=\"B5\" t=\"str\"><f>44+33</f><v>77</v></c>"), "formula");
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(0), QStringLiteral("Hello"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(0).toPlainString(), QStringLiteral("Hello"));
}
void WorksheetTest::testWriteHyperlinks()
@@ -136,11 +137,11 @@ void WorksheetTest::testWriteHyperlinks()
QVERIFY2(xmldata.contains("<hyperlink ref=\"D1\" r:id=\"rId4\"/>"), "mail");
QVERIFY2(xmldata.contains("<hyperlink ref=\"E1\" r:id=\"rId5\"/>"), "mail with subject");
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(0), QStringLiteral("http://qt-project.org"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(1), QStringLiteral("http://qt-project.org/abc"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(2), QStringLiteral("http://qt-project.org/abc.html#test"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(3), QStringLiteral("xyz@debao.me"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(4), QStringLiteral("xyz@debao.me?subject=Test"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(0).toPlainString(), QStringLiteral("http://qt-project.org"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(1).toPlainString(), QStringLiteral("http://qt-project.org/abc"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(2).toPlainString(), QStringLiteral("http://qt-project.org/abc.html#test"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(3).toPlainString(), QStringLiteral("xyz@debao.me"));
QCOMPARE(sheet.d_ptr->sharedStrings()->getSharedString(4).toPlainString(), QStringLiteral("xyz@debao.me?subject=Test"));
}
void WorksheetTest::testWriteDataValidations()