1 // Copyright 2011 The Emscripten Authors. All rights reserved.
2 // Emscripten is available under two separate licenses, the MIT license and the
3 // University of Illinois/NCSA Open Source License. Both these licenses can be
4 // found in the LICENSE file.
5
6 #include <QtTest/QtTest>
7
8 #include <poppler-qt4.h>
9
10 class TestSearch: public QObject
11 {
12 Q_OBJECT
13 private slots:
14 void bug7063();
15 void testNextAndPrevious();
16 };
17
bug7063()18 void TestSearch::bug7063()
19 {
20 Poppler::Document *doc;
21 doc = Poppler::Document::load("../../../test/unittestcases/bug7063.pdf");
22 QVERIFY( doc );
23
24 Poppler::Page *page = doc->page(0);
25 QRectF pageRegion( QPointF(0,0), page->pageSize() );
26
27 QCOMPARE( page->search(QString("non-ascii:"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), true );
28
29 QCOMPARE( page->search(QString("Ascii"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), false );
30 QCOMPARE( page->search(QString("Ascii"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseInsensitive), true );
31
32 QCOMPARE( page->search(QString("latin1:"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), false );
33
34 QCOMPARE( page->search(QString::fromUtf8("é"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), true );
35 QCOMPARE( page->search(QString::fromUtf8("à"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), true );
36 QCOMPARE( page->search(QString::fromUtf8("ç"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), true );
37 QCOMPARE( page->search(QString::fromUtf8("search \"é\", \"à\" or \"ç\""), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), true );
38 QCOMPARE( page->search(QString::fromUtf8("¥µ©"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), true );
39 QCOMPARE( page->search(QString::fromUtf8("¥©"), pageRegion, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), false );
40
41 delete doc;
42 }
43
testNextAndPrevious()44 void TestSearch::testNextAndPrevious()
45 {
46 Poppler::Document *doc;
47 doc = Poppler::Document::load("../../../test/unittestcases/xr01.pdf");
48 QVERIFY( doc );
49
50 Poppler::Page *page = doc->page(0);
51 QRectF region( QPointF(0,0), page->pageSize() );
52
53 QCOMPARE( page->search(QString("is"), region, Poppler::Page::FromTop, Poppler::Page::CaseSensitive), true );
54 QVERIFY( qAbs(region.x() - 161.44) < 0.01 );
55 QVERIFY( qAbs(region.y() - 127.85) < 0.01 );
56 QVERIFY( qAbs(region.width() - 6.70) < 0.01 );
57 QVERIFY( qAbs(region.height() - 8.85) < 0.01 );
58 QCOMPARE( page->search(QString("is"), region, Poppler::Page::NextResult, Poppler::Page::CaseSensitive), true );
59 QVERIFY( qAbs(region.x() - 171.46) < 0.01 );
60 QVERIFY( qAbs(region.y() - 127.85) < 0.01 );
61 QVERIFY( qAbs(region.width() - 6.70) < 0.01 );
62 QVERIFY( qAbs(region.height() - 8.85) < 0.01 );
63 QCOMPARE( page->search(QString("is"), region, Poppler::Page::NextResult, Poppler::Page::CaseSensitive), true );
64 QVERIFY( qAbs(region.x() - 161.44) < 0.01 );
65 QVERIFY( qAbs(region.y() - 139.81) < 0.01 );
66 QVERIFY( qAbs(region.width() - 6.70) < 0.01 );
67 QVERIFY( qAbs(region.height() - 8.85) < 0.01 );
68 QCOMPARE( page->search(QString("is"), region, Poppler::Page::NextResult, Poppler::Page::CaseSensitive), true );
69 QVERIFY( qAbs(region.x() - 171.46) < 0.01 );
70 QVERIFY( qAbs(region.y() - 139.81) < 0.01 );
71 QVERIFY( qAbs(region.width() - 6.70) < 0.01 );
72 QVERIFY( qAbs(region.height() - 8.85) < 0.01 );
73 QCOMPARE( page->search(QString("is"), region, Poppler::Page::NextResult, Poppler::Page::CaseSensitive), false );
74 QCOMPARE( page->search(QString("is"), region, Poppler::Page::PreviousResult, Poppler::Page::CaseSensitive), true );
75 QVERIFY( qAbs(region.x() - 161.44) < 0.01 );
76 QVERIFY( qAbs(region.y() - 139.81) < 0.01 );
77 QVERIFY( qAbs(region.width() - 6.70) < 0.01 );
78 QVERIFY( qAbs(region.height() - 8.85) < 0.01 );
79 QCOMPARE( page->search(QString("is"), region, Poppler::Page::PreviousResult, Poppler::Page::CaseSensitive), true );
80 QVERIFY( qAbs(region.x() - 171.46) < 0.01 );
81 QVERIFY( qAbs(region.y() - 127.85) < 0.01 );
82 QVERIFY( qAbs(region.width() - 6.70) < 0.01 );
83 QVERIFY( qAbs(region.height() - 8.85) < 0.01 );
84 QCOMPARE( page->search(QString("is"), region, Poppler::Page::PreviousResult, Poppler::Page::CaseSensitive), true );
85 QVERIFY( qAbs(region.x() - 161.44) < 0.01 );
86 QVERIFY( qAbs(region.y() - 127.85) < 0.01 );
87 QVERIFY( qAbs(region.width() - 6.70) < 0.01 );
88 QVERIFY( qAbs(region.height() - 8.85) < 0.01 );
89 QCOMPARE( page->search(QString("is"), region, Poppler::Page::PreviousResult, Poppler::Page::CaseSensitive), false );
90
91 delete doc;
92 }
93
94 QTEST_MAIN(TestSearch)
95 #include "check_search.moc"
96
97