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