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:
+2
-1
@@ -9,4 +9,5 @@ SUBDIRS=\
|
||||
document \
|
||||
sharedstrings \
|
||||
styles \
|
||||
format
|
||||
format \
|
||||
richstring
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user