Format: Use QMap instead of QHash

As the items of QHash are arbitrarily ordered, so the same formats may generate
different formatKey
This commit is contained in:
Debao Zhang
2013-11-23 13:45:17 +08:00
parent 77d727748d
commit e1d93af4b7
4 changed files with 63 additions and 38 deletions
+47 -35
View File
@@ -29,20 +29,25 @@ DocumentTest::DocumentTest()
void DocumentTest::testDocumentProperty()
{
QBuffer device;
device.open(QIODevice::WriteOnly);
Document xlsx1;
xlsx1.setDocumentProperty("creator", "Debao");
xlsx1.setDocumentProperty("company", "Test");
xlsx1.saveAs("test.xlsx");
xlsx1.saveAs(&device);
Document xlsx2("test.xlsx");
device.open(QIODevice::ReadOnly);
Document xlsx2(&device);
QCOMPARE(xlsx2.documentProperty("creator"), QString("Debao"));
QCOMPARE(xlsx2.documentProperty("company"), QString("Test"));
QFile::remove("test.xlsx");
}
void DocumentTest::testReadWriteString()
{
QBuffer device;
device.open(QIODevice::WriteOnly);
Document xlsx1;
xlsx1.write("A1", "Hello Qt!");
Format format;
@@ -50,24 +55,26 @@ void DocumentTest::testReadWriteString()
format.setBorderStyle(Format::BorderDashDotDot);
format.setFillPattern(Format::PatternSolid);
xlsx1.write("A2", "Hello Qt again!", format);
xlsx1.saveAs("test.xlsx");
xlsx1.saveAs(&device);
Document xlsx2("test.xlsx");
device.open(QIODevice::ReadOnly);
Document xlsx2(&device);
QCOMPARE(xlsx2.cellAt("A1")->dataType(), Cell::String);
QCOMPARE(xlsx2.cellAt("A1")->value().toString(), QString("Hello Qt!"));
QCOMPARE(xlsx2.cellAt("A2")->dataType(), Cell::String);
QCOMPARE(xlsx2.cellAt("A2")->value().toString(), QString("Hello Qt again!"));
QVERIFY(xlsx2.cellAt("A2")->format().isValid());
QCOMPARE(xlsx2.cellAt("A2")->format().fontColor(), format.fontColor());
QCOMPARE(xlsx2.cellAt("A2")->format().leftBorderStyle(), format.leftBorderStyle());
QCOMPARE(xlsx2.cellAt("A2")->format().fillPattern(), format.fillPattern());
// QCOMPARE(xlsx2.cellAt("A2")->format(), format);
QFile::remove("test.xlsx");
Format format2 = xlsx2.cellAt("A2")->format();
QVERIFY(format2.isValid());
// qDebug()<<format2;
// qDebug()<<format;
QCOMPARE(format2, format);
}
void DocumentTest::testReadWriteNumeric()
{
QBuffer device;
device.open(QIODevice::WriteOnly);
Document xlsx1;
xlsx1.write("A1", 123);
Format format;
@@ -76,21 +83,23 @@ void DocumentTest::testReadWriteNumeric()
format.setFillPattern(Format::PatternSolid);
format.setNumberFormatIndex(10);
xlsx1.write("A2", 12345, format);
xlsx1.saveAs("test.xlsx");
xlsx1.saveAs(&device);
Document xlsx2("test.xlsx");
device.open(QIODevice::ReadOnly);
Document xlsx2(&device);
QCOMPARE(xlsx2.cellAt("A1")->dataType(), Cell::Numeric);
QCOMPARE(xlsx2.cellAt("A1")->value().toDouble(), 123.0);
QCOMPARE(xlsx2.cellAt("A2")->dataType(), Cell::Numeric);
QCOMPARE(xlsx2.cellAt("A2")->value().toDouble(), 12345.0);
QVERIFY(xlsx2.cellAt("A2")->format().isValid());
QCOMPARE(xlsx2.cellAt("A2")->format(), format);
QFile::remove("test.xlsx");
}
void DocumentTest::testReadWriteBool()
{
QBuffer device;
device.open(QIODevice::WriteOnly);
Document xlsx1;
xlsx1.write("A1", true);
Format format;
@@ -98,21 +107,23 @@ void DocumentTest::testReadWriteBool()
format.setBorderStyle(Format::BorderDashDotDot);
format.setFillPattern(Format::PatternSolid);
xlsx1.write("A2", false, format);
xlsx1.saveAs("test.xlsx");
xlsx1.saveAs(&device);
Document xlsx2("test.xlsx");
device.open(QIODevice::ReadOnly);
Document xlsx2(&device);
QCOMPARE(xlsx2.cellAt("A1")->dataType(), Cell::Boolean);
QCOMPARE(xlsx2.cellAt("A1")->value().toBool(), true);
QCOMPARE(xlsx2.cellAt("A2")->dataType(), Cell::Boolean);
QCOMPARE(xlsx2.cellAt("A2")->value().toBool(), false);
QVERIFY(xlsx2.cellAt("A2")->format().isValid());
QCOMPARE(xlsx2.cellAt("A2")->format(), format);
QFile::remove("test.xlsx");
}
void DocumentTest::testReadWriteBlank()
{
QBuffer device;
device.open(QIODevice::WriteOnly);
Document xlsx1;
xlsx1.write("A1", QVariant());
Format format;
@@ -120,9 +131,10 @@ void DocumentTest::testReadWriteBlank()
format.setBorderStyle(Format::BorderDashDotDot);
format.setFillPattern(Format::PatternSolid);
xlsx1.write("A2", QVariant(), format);
xlsx1.saveAs("test.xlsx");
xlsx1.saveAs(&device);
Document xlsx2("test.xlsx");
device.open(QIODevice::ReadOnly);
Document xlsx2(&device);
QVERIFY(xlsx2.cellAt("A1"));
QCOMPARE(xlsx2.cellAt("A1")->dataType(), Cell::Blank);
QVERIFY(!xlsx2.cellAt("A1")->value().isValid());
@@ -131,12 +143,13 @@ void DocumentTest::testReadWriteBlank()
QVERIFY(!xlsx2.cellAt("A2")->value().isValid());
QVERIFY(xlsx2.cellAt("A2")->format().isValid());
QCOMPARE(xlsx2.cellAt("A2")->format(), format);
QFile::remove("test.xlsx");
}
void DocumentTest::testReadWriteFormula()
{
QBuffer device;
device.open(QIODevice::WriteOnly);
Document xlsx1;
xlsx1.write("A1", "=11+22");
Format format;
@@ -144,10 +157,11 @@ void DocumentTest::testReadWriteFormula()
format.setBorderStyle(Format::BorderDashDotDot);
format.setFillPattern(Format::PatternSolid);
xlsx1.write("A2", "=22+33", format);
xlsx1.saveAs("test.xlsx");
xlsx1.saveAs(&device);
Document xlsx2("test.xlsx");
device.open(QIODevice::ReadOnly);
Document xlsx2(&device);
QCOMPARE(xlsx2.cellAt("A1")->dataType(), Cell::Formula);
// QCOMPARE(xlsx2.cellAt("A1")->value().toDouble(), 0.0);
QCOMPARE(xlsx2.cellAt("A1")->formula(), QStringLiteral("11+22"));
@@ -156,12 +170,13 @@ void DocumentTest::testReadWriteFormula()
QCOMPARE(xlsx2.cellAt("A2")->formula(), QStringLiteral("22+33"));
QVERIFY(xlsx2.cellAt("A2")->format().isValid());
QCOMPARE(xlsx2.cellAt("A2")->format(), format);
QFile::remove("test.xlsx");
}
void DocumentTest::testReadWriteDateTime()
{
QBuffer device;
device.open(QIODevice::WriteOnly);
Document xlsx1;
QDateTime dt(QDate(2012, 11, 12), QTime(6, 0), Qt::UTC);
@@ -177,10 +192,10 @@ void DocumentTest::testReadWriteDateTime()
format3.setNumberFormat("dd/mm/yyyy");
xlsx1.write("A3", dt, format3);
xlsx1.saveAs("test.xlsx");
Document xlsx2("test.xlsx");
xlsx1.saveAs(&device);
device.open(QIODevice::ReadOnly);
Document xlsx2(&device);
QCOMPARE(xlsx2.cellAt("A1")->dataType(), Cell::Numeric);
QCOMPARE(xlsx2.cellAt("A1")->isDateTime(), true);
QCOMPARE(xlsx2.cellAt("A1")->dateTime(), dt);
@@ -195,9 +210,6 @@ void DocumentTest::testReadWriteDateTime()
QCOMPARE(xlsx2.cellAt("A3")->isDateTime(), true);
QCOMPARE(xlsx2.cellAt("A3")->dateTime(), dt);
QCOMPARE(xlsx2.cellAt("A3")->format().numberFormat(), QString("dd/mm/yyyy"));
QFile::remove("test.xlsx");
}
QTEST_APPLESS_MAIN(DocumentTest)