blob: fb4f7163667523e8580be92ec541f7eec48b2a40 [file] [log] [blame]
#include <QtTest/QtTest>
#include <poppler-qt4.h>
class TestMetaData: public QObject
{
Q_OBJECT
private slots:
void checkStrings_data();
void checkStrings();
void checkStrings2_data();
void checkStrings2();
void checkStringKeys();
void checkLinearised();
void checkNumPages();
void checkDate();
void checkPageSize();
void checkPortraitOrientation();
void checkLandscapeOrientation();
void checkUpsideDownOrientation();
void checkSeascapeOrientation();
void checkVersion();
void checkPdfId();
void checkNoPdfId();
};
void TestMetaData::checkStrings_data()
{
QTest::addColumn<QString>("key");
QTest::addColumn<QString>("value");
QTest::newRow( "Author" ) << "Author" << "Brad Hards";
QTest::newRow( "Title" ) << "Title" << "Two pages";
QTest::newRow( "Subject" ) << "Subject"
<< "A two page layout for poppler testing";
QTest::newRow( "Keywords" ) << "Keywords" << "Qt4 bindings";
QTest::newRow( "Creator" ) << "Creator" << "iText: cgpdftops CUPS filter";
QTest::newRow( "Producer" ) << "Producer" << "Acrobat Distiller 7.0 for Macintosh";
}
void TestMetaData::checkStrings()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/doublepage.pdf");
QVERIFY( doc );
QFETCH( QString, key );
QFETCH( QString, value );
QCOMPARE( doc->info(key), value );
delete doc;
}
void TestMetaData::checkStrings2_data()
{
QTest::addColumn<QString>("key");
QTest::addColumn<QString>("value");
QTest::newRow( "Title" ) << "Title" << "Malaga hotels";
QTest::newRow( "Author" ) << "Author" << "Brad Hards";
QTest::newRow( "Creator" ) << "Creator" << "Safari: cgpdftops CUPS filter";
QTest::newRow( "Producer" ) << "Producer" << "Acrobat Distiller 7.0 for Macintosh";
QTest::newRow( "Keywords" ) << "Keywords" << "First\rSecond\rthird";
QTest::newRow( "Custom1" ) << "Custom1" << "CustomValue1";
QTest::newRow( "Custom2" ) << "Custom2" << "CustomValue2";
}
void TestMetaData::checkStrings2()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/truetype.pdf");
QVERIFY( doc );
QFETCH( QString, key );
QFETCH( QString, value );
QCOMPARE( doc->info(key), value );
delete doc;
}
void TestMetaData::checkStringKeys()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/truetype.pdf");
QVERIFY( doc );
QStringList keyList;
keyList << "Title" << "Author" << "Creator" << "Keywords" << "CreationDate";
keyList << "Producer" << "ModDate" << "Custom1" << "Custom2";
keyList.sort();
QStringList keysInDoc = doc->infoKeys();
keysInDoc.sort();
QCOMPARE( keysInDoc, keyList );
delete doc;
}
void TestMetaData::checkLinearised()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/orientation.pdf");
QVERIFY( doc );
QVERIFY( doc->isLinearized() );
delete doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/truetype.pdf");
QVERIFY( doc );
QCOMPARE( doc->isLinearized(), false );
delete doc;
}
void TestMetaData::checkPortraitOrientation()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/orientation.pdf");
QVERIFY( doc );
Poppler::Page *page = doc->page(0);
QCOMPARE( page->orientation(), Poppler::Page::Portrait );
delete page;
delete doc;
}
void TestMetaData::checkNumPages()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/doublepage.pdf");
QVERIFY( doc );
QCOMPARE( doc->numPages(), 2 );
delete doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/truetype.pdf");
QVERIFY( doc );
QCOMPARE( doc->numPages(), 1 );
delete doc;
}
void TestMetaData::checkDate()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/truetype.pdf");
QVERIFY( doc );
QCOMPARE( doc->date("ModDate"), QDateTime(QDate(2005, 12, 5), QTime(9,44,46), Qt::UTC ) );
QCOMPARE( doc->date("CreationDate"), QDateTime(QDate(2005, 8, 13), QTime(1,12,11), Qt::UTC ) );
delete doc;
}
void TestMetaData::checkPageSize()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/truetype.pdf");
QVERIFY( doc );
Poppler::Page *page = doc->page(0);
QCOMPARE( page->pageSize(), QSize(595, 842) );
QCOMPARE( page->pageSizeF(), QSizeF(595.22, 842) );
delete page;
delete doc;
}
void TestMetaData::checkLandscapeOrientation()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/orientation.pdf");
QVERIFY( doc );
Poppler::Page *page = doc->page(1);
QCOMPARE( page->orientation(), Poppler::Page::Landscape );
delete page;
delete doc;
}
void TestMetaData::checkUpsideDownOrientation()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/orientation.pdf");
QVERIFY( doc );
Poppler::Page *page = doc->page(2);
QCOMPARE( page->orientation(), Poppler::Page::UpsideDown );
delete page;
delete doc;
}
void TestMetaData::checkSeascapeOrientation()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/orientation.pdf");
QVERIFY( doc );
Poppler::Page *page = doc->page(3);
QCOMPARE( page->orientation(), Poppler::Page::Seascape );
delete page;
delete doc;
}
void TestMetaData::checkVersion()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/doublepage.pdf");
QVERIFY( doc );
QCOMPARE( doc->pdfVersion(), 1.6 );
int major = 0, minor = 0;
doc->getPdfVersion( &major, &minor );
QCOMPARE( major, 1 );
QCOMPARE( minor, 6 );
delete doc;
}
void TestMetaData::checkPdfId()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/A6EmbeddedFiles.pdf");
QVERIFY( doc );
const QByteArray referencePermanentId( "00C9D5B6D8FB11D7A902003065D630AA" );
const QByteArray referenceUpdateId( "39AECAE6D8FB11D7A902003065D630AA" );
{
// no IDs wanted, just existance check
QVERIFY( doc->getPdfId( 0, 0 ) );
}
{
// only permanent ID
QByteArray permanentId;
QVERIFY( doc->getPdfId( &permanentId, 0 ) );
QCOMPARE( permanentId.toUpper(), referencePermanentId );
}
{
// only update ID
QByteArray updateId;
QVERIFY( doc->getPdfId( 0, &updateId ) );
QCOMPARE( updateId.toUpper(), referenceUpdateId );
}
{
// both IDs
QByteArray permanentId;
QByteArray updateId;
QVERIFY( doc->getPdfId( &permanentId, &updateId ) );
QCOMPARE( permanentId.toUpper(), referencePermanentId );
QCOMPARE( updateId.toUpper(), referenceUpdateId );
}
delete doc;
}
void TestMetaData::checkNoPdfId()
{
Poppler::Document *doc;
doc = Poppler::Document::load(TESTDATADIR "/unittestcases/WithActualText.pdf");
QVERIFY( doc );
QVERIFY( !doc->getPdfId( 0, 0 ) );
delete doc;
}
QTEST_MAIN(TestMetaData)
#include "check_metadata.moc"