diff --git a/autotests/exiv2extractortest.cpp b/autotests/exiv2extractortest.cpp index a537b67..58efce8 100644 --- a/autotests/exiv2extractortest.cpp +++ b/autotests/exiv2extractortest.cpp @@ -1,58 +1,81 @@ /* * * Copyright (C) 2014 Vishesh Handa * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #include "exiv2extractortest.h" #include "simpleextractionresult.h" #include "indexerextractortestsconfig.h" #include "extractors/exiv2extractor.h" #include #include #include using namespace KFileMetaData; +using namespace KFileMetaData::Property; QString Exiv2ExtractorTest::testFilePath(const QString& fileName) const { return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName; } void Exiv2ExtractorTest::test() { Exiv2Extractor plugin{this}; SimpleExtractionResult result(testFilePath("test.jpg"), "image/jpeg"); plugin.extract(&result); QCOMPARE(result.types().size(), 1); QCOMPARE(result.types().constFirst(), Type::Image); - using namespace KFileMetaData::Property; - - QCOMPARE(result.properties().value(PhotoGpsLatitude).toDouble(), 41.411); - QCOMPARE(result.properties().value(PhotoGpsLongitude).toDouble(), 2.173); - QVERIFY(qAbs(result.properties().value(PhotoGpsAltitude).toDouble() - 12.2) < 0.0001); QCOMPARE(result.properties().value(Artist).toString(), QStringLiteral("Artist")); QCOMPARE(result.properties().value(Description).toString(), QStringLiteral("Description")); QCOMPARE(result.properties().value(Copyright).toString(), QStringLiteral("Copyright")); QCOMPARE(result.properties().value(Generator).toString(), QStringLiteral("digiKam-5.9.0")); } +void Exiv2ExtractorTest::testGPS() +{ + Exiv2Extractor plugin{this}; + + SimpleExtractionResult result(testFilePath("test.jpg"), "image/jpeg"); + plugin.extract(&result); + + QCOMPARE(result.properties().value(PhotoGpsLatitude).toDouble(), 41.411); + QCOMPARE(result.properties().value(PhotoGpsLongitude).toDouble(), 2.173); + QCOMPARE(result.properties().value(PhotoGpsAltitude).toDouble(), 12.2); + + SimpleExtractionResult resultEmpty(testFilePath("test_no_gps.jpg"), "image/jpeg"); + plugin.extract(&resultEmpty); + QVERIFY(!resultEmpty.properties().contains(PhotoGpsLatitude)); + QVERIFY(!resultEmpty.properties().contains(PhotoGpsLongitude)); + QVERIFY(!resultEmpty.properties().contains(PhotoGpsAltitude)); + + SimpleExtractionResult resultZero(testFilePath("test_zero_gps.jpg"), "image/jpeg"); + plugin.extract(&resultZero); + QVERIFY(resultZero.properties().contains(PhotoGpsLatitude)); + QVERIFY(resultZero.properties().contains(PhotoGpsLongitude)); + QVERIFY(resultZero.properties().contains(PhotoGpsAltitude)); + QCOMPARE(resultZero.properties().value(PhotoGpsLatitude).toDouble(), 0.0); + QCOMPARE(resultZero.properties().value(PhotoGpsLongitude).toDouble(), 0.0); + QCOMPARE(resultZero.properties().value(PhotoGpsAltitude).toDouble(), 0.0); +} + QTEST_GUILESS_MAIN(Exiv2ExtractorTest) diff --git a/autotests/exiv2extractortest.h b/autotests/exiv2extractortest.h index b19d224..3a5cad5 100644 --- a/autotests/exiv2extractortest.h +++ b/autotests/exiv2extractortest.h @@ -1,36 +1,37 @@ /* * * Copyright (C) 2014 Vishesh Handa * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef EXIV2EXTRACTORTEST_H #define EXIV2EXTRACTORTEST_H #include class Exiv2ExtractorTest : public QObject { Q_OBJECT private: QString testFilePath(const QString& fileName) const; private Q_SLOTS: void test(); + void testGPS(); }; #endif // EXIV2EXTRACTORTEST_H diff --git a/autotests/samplefiles/test_no_gps.jpg b/autotests/samplefiles/test_no_gps.jpg new file mode 100644 index 0000000..ecff426 Binary files /dev/null and b/autotests/samplefiles/test_no_gps.jpg differ diff --git a/autotests/samplefiles/test_zero_gps.jpg b/autotests/samplefiles/test_zero_gps.jpg new file mode 100644 index 0000000..5f634ac Binary files /dev/null and b/autotests/samplefiles/test_zero_gps.jpg differ