diff --git a/autotests/exiv2extractortest.h b/autotests/exiv2extractortest.h --- a/autotests/exiv2extractortest.h +++ b/autotests/exiv2extractortest.h @@ -31,6 +31,7 @@ private Q_SLOTS: void test(); + void testGPS(); }; #endif // EXIV2EXTRACTORTEST_H diff --git a/autotests/exiv2extractortest.cpp b/autotests/exiv2extractortest.cpp --- a/autotests/exiv2extractortest.cpp +++ b/autotests/exiv2extractortest.cpp @@ -28,6 +28,7 @@ #include using namespace KFileMetaData; +using namespace KFileMetaData::Property; QString Exiv2ExtractorTest::testFilePath(const QString& fileName) const { @@ -44,15 +45,37 @@ 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/samplefiles/test_no_gps.jpg b/autotests/samplefiles/test_no_gps.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ecff4261f4cdb935b5d6fbda720b0338c1905f09 GIT binary patch literal 4354 zc%1E5Yj6`)6u$e&v#B(+Kq-N4x2*++=CMhoSsOYfrBI{{lp@GDI@@O3u1&J(W=le6 zn2`#Cj5>fXWX72SRndQ-Adeq{A}ai`J`ixmv4WruC@3m2&ct(*O_O%|L;Y(`=Ir_Q z?sre_ckkYva}yU5-=Kn}P0dY+AP95-ekd_QeX=Mnbt2TCSl}@&?a2cQw3P@ej145{}#_qK{(Q+XqBGf2G zI}|CRN^%%27vp_VrUot1a;4+gew@?g;ayJN>0w-M-ZP)~xKV?mN>LRdzZ}`1NL}43 zsziGR%*ozYK*lQ?z7Ck(W*QxBm4*Z0Xon#=OHPh+Qae&gZv&s!un`mxJ5wA2E8dmL zX@hoB!xexj4bKBiYuE!=r{OxlhFzI47_+cR!`RFkzY+LoP#c@e=_Cd-vrP`B_;^Jr z4dd0)4W?#30DbfJrSdETJVnE8fT!&poFi?~UN}$8X*x(YRdWBaJe-)9*m`Jqg#; zzG?N=BK)?eS0Fh9h|+e69%XjYQ7W^OPEuoc61MSgc4EZ*Xt%0Hc!wh#wF?2cU9@+| zAxB(@I9zt81J%{XBSJ@ys50$hmlXD~Kc9G)Wu$D{AZfQxsBChIR-qz9I z)8P%U^$VD~I3Ev1LZT`#@lY@v<>Nj!nVbiVn;k5Zq^LbUc5TZF#xE-(r!!>j zZwB8B?Q);$V_7Y&Ds^V^j+p}dBsm9ZDhzjGW_q&HL=irb6EpD>jf&IrtK?2KCMcqh z9rKC7i6XpT5d~FN+GII6{yAvFsrc1VQSr;6kQi1qxedWI3QBl5d{78?`Pg`MK{iV+%%?}U~MoQUFro)&T^KsoaHQMIs5-vrdSliP$9;k z6inPe{EBW_m80EqgmJ_1sdiy=3r#1h(OEWP9inDbF1C>k$e@)tHnIunl4VZfE96H; zz22bL84U)5$z(KJit;Uad6wyu3nvxLEGeBev&3d&D(qDZJFnbkn>~NdJSfOLp3*9> zua>K`yFDCELYPb@OP-}TKfjnOvz2lG+7c&`)d&Y0BSo-?v=Wq+NSsEcP($m8q@i?O zPg1l_Z!nt7c|bT^fJlO(NSe~=uw-H*KDW_U-Q+S?gT8R3U|@TTxJ^6v8p{_RJT;|t z_-2K>T^TT$r%o%LUQ&5))$BQQJvH~uul4f&#zjqwmozV3)wcSyAnf8oWKcE7x5-~ORjUwi$)8*d(Z>+Qow-Z^^g__VShQu3r28haYeK^6Ty2e*fdnpLek?0?rm`n^2b( zbdfYo(FUxGAY+(drFCU4{p5y~2BEi*qtu)`vH9s|hOhaK4?nV{cjV4xd;7*?wr9_5 N_Z`2!=1_g&;@=h literal 0 Hc$@r-$p}!ES__nwB9wLTDDsKqPtq&{=4i1c@}D zKZo`JU=!$zm<5;yy}F?e%?6A;uR_ZuG>8Cw1KL6b--cF9P!cAgISD!bJ!me#IiU5> z`7mG|U<=@EQs(1!V3s!kxg1Wn*Xi&&+*W6q*S*~9E<@FV7>tSt`T58e zA=uL^qC#|V*eH2VKuNDC_%2{(mtivVA_WJap}jh3#2hY{gW4-sjUaPc!8w45eKLo@ z)$f;M7K5Esumdoq;0o-k;FW+i3T_0f+pp%JPr(KSV=*fHR^X!%B{!$TL5!#)PmaiZ zJiC;F@yuyPU*FL+|&9*L&KnyzW2#!jw*)Mpa@ z&)hT2SnD()(n)37qi0OXi|Q@-8d@dlr&+ zSP6|LCCOV^Gb?Q^>Fga1?WGlN{7y>Q*IK0R{Y|vG_XT?D-p4Y1|0TvVDtbjR;PMaiX=8>j{Q^%&({4XRN`1kLf6Hb~H!)TyL;( zNZ{IsTGnujyOw|f&W!xJNMM9j&TH~SqaMT<3F;Z|ZU~INCR*53^`IrsOtyVuT za8|d?ZF7{uCvmfjffz!d+uK%KuS9?+AETrii^XiQG8-@S*qt7a$L?_1U9M7Klt#CN zMK)d}_?hkG2Sp#lC}G85w;FfK5a1qZ43bnxH$5{sSVlZjya))SXAZ_a#K)$5RbFBpAGl;n0RS`>t+Z0MP`Mcm1eopE|Y+5R~_wX z!rG^;kE96}9fp%@c!hOFW@JWYWJYFWM*e@Io`ShB9DQSO#!cKr-qv1T5tF_r{SRFHv5zINUEjt!4)?1J-LPj7HjR2_cJ6w5 z_x|Uef8oWK4!nHu@R8A1Uwi%N8*d(e>+KWoy!+nCQ)fRs_tE)}Kl${tFTVWh>xb38G`0@HrKi{}@`?ov4|MBPDzwY6>2)HyQC2d`1sEed&iq_$}2r`BVW?GZy z)Miz$(Xj*BjBA@dr)J-wV`mKcWo;94I)yRg+yeJ_;VoR6RM|f(Z1_J_Hd&Zj*A--< y;FfBp%%}=o=o88>oZkM-vt!qNr^X)JF))7jnyqu|Nz0z|yM3pA={R1MxcoN-8ea|o literal 0 Hc$@