diff --git a/autotests/samplefiles/no-meta/test.flac b/autotests/samplefiles/no-meta/test.flac new file mode 100644 index 0000000000000000000000000000000000000000..0371941e860725047dc501ec16f3886ecf04847d GIT binary patch literal 27251 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 FzX1c@2sHoz literal 0 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 literal 0 Hc$@88GRPrra}o(_$i+XH)Zmauf`Un4H#r@N*m5n>Vna@D7UAS31Ws!cL=uT)GO4PWOeUY#G_6?F zb-hwC45M1D)oS&6qtR$KTdh{R-RX3?-CnQP?+*rp;czq>jmMM8WI8oXb2gjL=ZnR1 zxwNeHeeIdA?U`dg=as{q`^`cPynUFjzh|{pPbE>_MQ-fPuE^fL$d-M)*jsyf{2=1V zr7qH6??L;2Tz__J^;|l8{5z0avq4}XbS#99h0w7OIu=65Lg-is9SfmjA#^N+j)l;% z5IPn@$3o~>2ptQdVfa`_$2{~XP lbS#99h0w7OIu=65Lg-is9SfmjA#^N+j)l;%5IPnj2cPJ0|FZx9 literal 0 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 Z0{K6^@Skwd)iyHG1_}Nj^RWNS{|7eW5(EGM literal 0 Hc$@EY~>?`_^~39F3h$w zkp!CtWYQQ@o2Cw6l0piuP_fF+&bWS15Jf&JxVqh1=>k$`*Ij3}&d$#4-uD7kcRSN| zcK4qh?wohux#ymH&%3{K-o58$RaE4HFfd=)GzPTeWm(ZT0y}qxy)Mz3FVHuqv z4RbGzdY`3bkt4yABgvkJYknDIss8bFSrQ(aX&F@5TJrj9sV}ZgTenswm69WP@G<cd&GsZd<4p7dDi9lS&yYt0rk*SO|~UcG0U}H5DV?~m!xM`Sm~+4 zruwg>1D{!z;x>;ZGxbrTwL(?9B4h(qX&jbF)d0u3Nd>^n(h5<7GbZADtF*kj) zE8}{ee)7!T+fPuD+mJvFhZrJb#@9L`ZPM_BNXifJGt4Zz^pbf2WHUz_(-zgG_`*BY zQV`?Ob}LqTHNADt_wDBtGhWm1;IvmZ47oOM0n-EZX1teL3Zg??a(CT`M?`Y_hwtt5 zvic#nx~tCNIou1mh%RHZXG=HaH0SDw_qX&?^DR_!m+x`CaU|FN>vQh+M=nDytN-5b zy~yxWdKAcTy-MWJ;ga8BjIo(Y-X>OQV#+<$H?z{HM2i=n8=bB6xz;lTNB0xjG&cM;JPelYUscw|DkBPTQ|_Mx{rTGSqblSjG+fULi8M_DT$ z)1SH5S%REcNRsiC)bU)kzQ!==t||EB&7zwP#oxU7IiyE5CHZbc!BZ4kI{eXjFwR2@ z!TLF-tBP6Fg)A%+Iuul~H&gMJ*@JEwL$8gAvmVN`;x^>4)#GygXnb+bi+gikFpQ@b z=e|&^-?n$VdvDR1n%nOhZh!OU7f(>}5^9OD0IYYe!kkH%b1JPF%~Vznh=4MZ3>N!c zVe?d)6U}rAjLwQWcl&#ud+!|=1t}GPkSb)c2Wssdwf6Sf=2@Gw@;!HZhiA=|!2Q0H zUwc_(fNno<@JR;%z#Kfq z9vbE9Vg)w{i9T0ygHYed)qh{njmvd$5ZEZ-paBPxE0Oejq8icCv0Wdvlrf3>{%(z^ zqW6<4vIb7?PZQsAFZ?7v-2-`7j;Qd>a~ikj{FL!J2Q2uZPP=!_#x< z{{vg6psftnNct1DprQ29|Hir&%VPPSfN$^aO%EV%@`Z@`%dQ>l^09!QdP;L}}}9 z)O<|^{qv8f~d!E;X&Hea->Prcxu$Tbh)yXzb4Eq z1mHX;z|OrQUCs9)iT$XRjjtB?$A}=$M-W)NHBT!NoNy7lFg-$G9j<6xBsfX{aPwd| zd>XPV2eg2<9GIn>$V2;;Bp=i90unwz|{jM=6ivu8!Li@zPG<}tdf}5ZLW^)+{H$=*fQr;4J0;@Aa4hRk| z;CXar9%IpDJj@GpdVO(^n8I?dPfEfDVF`iOw{}kviJBqdOc(SB#B9f8jp4WMgW_ME zynm|)fCuy?pe5|tZJX1u#HC_+xqv(`l^lx$X5$6~kLFul1S9HSqEQ1wzNveHOsFQ5 z6|jPw`6|_XToF$%bF z$ABI&*wXG+dgtqHO zev_=jH&NKw)nD3_iJkteuu-;R)gE0(@6BBwb#uygizKHxWlfhEua@tT1a9qG*3Vc~ zB$nJL+%4_rd|uS(KjUeXz4Yi7A(l<-0O04AaF9`dcwHy@L40%MGbBt9Hy#3m1jY;u z10T_(fKd^HGg|YYjNiJzx63$p{l)xHGV3?n+g~kajl;vroTCK4#I7zT6 zlhC`|G?*N7RLKeY6(uL4o_Q{`tH3*qqs>KN5_Nr&pX1|f*%WWeF0{8-Gl^>*#4v9f zb=zcC*O9!GX*SNp=eRXnu}H~L4&Kl4-K^fyYKnndn+llC4gkXG5$nMDJK#$bav+Sp z`B`A*WxQs~xQJKPW=A2cT$-}99$yRc@^|=(cPQVbt)0DlGMrE6GgRW37Bijet-2Vu zulB;SS4J>V4UgJ1mw^ZH19t!xYxHVKdF7s}1GR6Mt+plygX&HIZ@^Y!H z&vI8j_dJiEv7A=#RLXp}7;v?<;bKu4bHE%-rnEtU%x&5z^nMsjab{iK(N&@0-TI zZ?XdaoIo<`FGhC1AN}vEUEBVB^&eOzQx#_%Z)= zn}xtC>lUX8WQvvPAFbyINT~5!DNghGp1L1Jbj5i%K55^NCfr@kN^E-UBY)4mz$L9e z0m0%fBf9UM%Qm=QSkQCFMyPwEGwrkzGDlU(m>%jZoaL)de_&li#z09ME{a0{`4ZFv zEx(bvW@+7)%OOjblC6FiG+RiA@`P@Gr`z$;9oxm%w!GnOsL(XB)k0Z3R=g00R|2V? zCY#b$`AY6ev5Z`@sW$Z-QQu<^@&9uGAs{%Y5l%9G{Hn)^R?e97G)V1xrm%|W6GAhl z65US~`9eg+)x^jEg+L?5a|=bG&DgyHi6BJ%sR(7Lr6v{fss~!b(9nM~2xS2+b=!j2QMeh1*?rTo49SIBhMW@RtTZ;n$>9iEs=}L0% z4X5-qP-hWF>02}!AZizoLxU2uzgfJWAF@RUXF2w|cq+F~#OB&o=duW5ZwR8L+6#+6 z$Srs`TX(Qu%G}5PlB315UrUg4X;r{*W7$pnzvlOB_qZzV_IX}Vv4QZj;dD0$&S$!= z0H>INiMwDzE36Pel#x0hWk6_wyJSvoB7D7>Y~ya3&(ZJ77uEFrxE3fnuN`ch9V$s@ zc3xuvTAJLwwZ%Yf$f#<2+o*$r0n{=-Q`l1Fus}-v8a`G@Mn$isjqiy!aw2j~0lOe@ z@eG#8UU_!mGfGzNeU{erC!(&mmf|G4{P}W~n6M61`=;-v{)t0|eJu#nYR`%dyF^*_ z1CxqtN?ZyexSVrOdR)6w;)RP-K;}f1a2N_p27E`mV@|x7I_>~V_>!A&nbg!abjA5cK`z<1DFrlcih)92g^lwUP$_fRoiT=6DNl*Tn4Apk=y zc3====;9dcN@^2TR_u#4q3Ux#~@GBL>iRe_r;gJ&MDQh!@o1%^>Fng|Hv>#k+1*1ebx)`|Rb+4;E7ET%rlO z#R-U@S=VVswwK2Yk3MlghW>OqZewMVu=L*u&mlgz7AvR%+@R%Lz5Qp0Q_RONLX^l- z4tn-6XG?%(HP`eSg{5bVe6s2Y3Jl@yB31nKR3FOc5Q|_Wp(@X70mLlo70Hoi8-bLj z`rU7Z`VeT~o4+i1)zg5lXdS1@Qv8P|e2glU`=VbjtEu+Sw9O=xwtbEr_Oe!QpBY5% zbwihdO(m{<+bhlQ#Vg!UpT0A7%BM;hx*r<{i%>Hv9N6j<;Vl4Z6CMpgk&Z>TbX*LcC4 z1bVV_ufwKatJP7YDvA5N{MPfz);-Ww*ct@{xLh#2q9KPLv9#hE1T7i6{TYi*Ye~Ix zUsyCc`!YnbPu7vk!F5w8xa0Lhi$tqhN;6IND2v$6{1=14m4$|+5stnX>Pz-s)agN@ z!_m=rfqW;{R-iCu0(C;ggzdNq^w2dEPKVhr!%9%!n|N2Ddl7KqTAE5-A1&vNAMG!t zo%Bd?eA2gzR=7wYj!lE9zGOqzG~l*DnUiBj1YYsp+%$b+4um}=?@$4z@n@_ApxPX* z_7#Ut)S6J+K_^NxGZp%%ugKSbvgQCKU>J=TmzW#)3%YwDW9<}KG!)Ge(x?dbeH>gM zr?iUD5m`^VPcFkUAd#LqxprKdFrD|XW_!DLTD&peq-cinf8P<|p}t$JWh|J*=BSu& z5~ccWS~bCqhNPtMC;6#5YfF;4_JexS8w2KB{4T8u za<$05@Q*utA+Q$OBlK9|U$dMb-}Gv!^-<}aK%J?`@xrxq){DMn-rzxy8?IS(y%eTf zIAnslpt&;r%{ebp?!n%S>Yt=qt96&0^_gBy@#0I9#Bl0zIBa37S!y6~@Y#|Q7r8I& zrwTSUMr!CeiCyH29FEW7s+_nMs~LxHoPW?5 zq;wTc@u;0Q+h&U#R^@zS4M>=;_%*cQGVMISTk*NksN-laBO(YY=266G;) z?=XR6*k1g*c(KQ4;qPY{>jr#zPy{UJ<_!@+$by3j7VOEGn+#cYl&y+u&{liF-He9Z z1#~Q;RQtAtKH?fnOz7lSGZF!ww2?D=DHSv<)n9bz1R0oKg1$CLJU_4o*O<)ITs_1K zf&ZxPSk7ObWzyTB$tXv_B&G!sJf9m6wHKY;u^on(!n|&dWv7&Vt!^bhBD+s+SR-Kk*1jj4NE#i%xj7;5p$k-Lq7+&Hu1FN!H&bM z``yIUl~8ou(?&Bgp|g%jTW<-@IGn`s=xzvoME(r&}IZsgWP zV!%3W$Y5a6ibF>#v7Ot-y%T{Zj~i$F>+&xrh-Pzz*b`KHexls*MpT7zSt~HPyS^)DP{0|_YnmtTxo2i|Wi<#od=hoPD~SOUo; zmJ{-iG4($g9GzAesV^ilxQo$8JG@@%SwrcUgdz^2?>0cqD0ns3%t(o0s|zF$scYRl zvyc7dZ&zMKOIka%d<))M7Hq%GlTb%j%sc77*DYY`P3?UV@6Uf*vU+=-HE^MI&O>$e zV5Ff&N(0Vy6_kj@bl>3iHlxPQphnHR=kW!!@*yT#ZMx_Q(kbQ-a8dw5EKg~OPbC=# zzhDzumjSX6fp*&1UQwpJ51AwMh}%u7X^LaA-hJ;It9zS4DuWtfw5R)_dyk;k+vN$_ zng{wuH0!iyOdD*N&mEJvX~94}PwQ9mpOW`-Fa_%BRmg8b|Fu&C`^HG%4=MYpiPkmY z!RFU-fAYklU$({jkXlcKHOI+3m0vz<5z^bMs8Swcx;d8jlbPG%Fp`5>c4T5(pi!7S zIluaWiS10S$Z>x1QoHOke^X*Ap>%UyuYx7~)b$qsiwB>}8i!yVujB<((8Sl+5xn;$ z6g|gMHEiQJNY{_U?qVyl6Rtey*(Ze@juysydWSM?&&8{>X^=11+AfjdtEAc4Z$$yV z{p%9h9Qbj$^MXb^oOmotN zQkjuTsGwMnrRzYI$}>=TFt<1)Uoah#siB+~kU+zKnRfEiZD^aUGat2x54dP=H`RhJJtwVdcp{mHqMI`0#B(AUNxP5MC{DXlEAV% z?hwG&@?kXVOsd$=FN_s?$2|HpPa$`|0l;8z_iy+dO0;&r;oC!XWlN+^pupw9FQZ}G z$7=Sne|gR#cfoHfEOLp$SS_2mq69pas5C??C#Go;C>s25^sO6s7YVDujEz))~oF+nNDR!e{ak4#|wmdklc%Be2;%oUHxg>`Sch*~s+~ zT=iezf7X5Fh3^`SvDJa<;Xui{(a3-$faFnk);L}mUy}%>xzKL!DFMt!*_tm|8$UaR zuUx{%oG}=(fk^C1ryXEL(XpjFsOt}9I!QCXA4cRH3OOTO^4#67^l`Y7sk$qfwM5S1 z19!PQgqH1Dm~pNEeMZ?XL1s zUvL)M1$gC;xZ*#M=w}%DK>%*}(fI!+L(iUUx*49Yh-EWfbj!N?w0gQxe$ z&VbusImjg|XU&vWU(8{q*WQ5;QY$(aGDQ8k>^zv^dM~c05qkRK7-2~e?4+P}icpzF zalodBfM$v#1B?v-jCa!^9${t?n(+z=w5(q`Q8-cJ9~cP(^z|ouul{kH>Rnn?3nL-? zjAOU>y>pYggbnVO@9y{My1|00@M~gEZ;j191Rl+Z{%T>0FeK^oR$d4x zijX1MJWBRg@?A46>@kQhAj#lZkxKi8tUFo66%B4Jd24%D%G_J}bJtD@X!8V4I%JVW z{d->dQ4zUgK^8kW87@#hPJ2w^+!(ihH6F(hass?MUFE>6@ItEJhcZ54GkH4KFXI{R7yLLZQ= z^y9ULtEnbHTh zXPb;Tuc3<6@S72Kk;T**{7)T>hZZB$_xXpUB=Jpgo5j0ctP(;w3+FkqU(ZekpI?}N z;@+u;mDkua#-vv`Xj!X(LRa*lyU#SRg6wDU!xyd#9;+b6ApV>8r&s_3IA8RF?;o0r zrzST(RAjrKzP%p7MMndP%1mevaq=P2U5#@}A4F(<1TtF$siEFRMD&-%42ivFHSbo7uk8UJ0Hr(7T-uj(TM7oe~kp)>&Qus>CR`NK?&IRs* zUR@+(P4hyF;M5^`KP@^uiXDX9T#9KQ;--N}LqOqtZm~4~JIMzPo!*?E-Z>SJQ|{Y_ zsk~RNjKen)NT7m%ctd07|Jx)V^8HAnz9gh?6?=jsx{MjBa~o8MO3Xb=g%Fu4TE${u z#CEV5V9@TGX_3q|BlRR_PUv0pBs3mI8>NEfCnJ|0{3}g`PvvvjuO95C+eOb>MTpay zeO)>%PMB1{So}DYK{gS=i#TG z;FiVKExedWk0eD_GzxY*wdf!psnj;*%hh$$RF)H!!skoZKbFb=H}cwRA%j@jn7)}#wDvnZr6_As3Xr9wb~?zd^^C-Fo(fvSg(BP z&g?7)LLZEV{6Ds-%}%Sjbry?KZ%kK6Y@$$pbz`5hIc($m%KRf!!mRrHk8kJ~TL}!< z)6VwR4x}tMY0P~oLG;J7JyvXFrK_fVxPhq50Dwd^^ImL@1@Q>|s|EK1A;Tnr4Rjv9(+ zwu17yXV%Gc)#yAo5aFIsv!c763ClKu5};}fV(j0vBUy4UnMy<&U$Q%r<3}bk_S|sp zE0QZcbBL*~MW08y3NLd{vojuQc1CwO#Uj&isH9waPPHYNcy!;i97_ zahDJ-8kb9Hv4}}lKs}DX*aH6hI?82b&zBe5O?>eL4h?9Ij%_z8TccWh9o|?3Rn4Re zDTwb&IY{B!(sabrrC1_@p!s$$-R59T`WZu2D-?Xi-dcO{X!|LjIGI%perTbgt~ZFc ztLL$QXa!Cn7V#`*WTveG4t@^A=)49Ci|&{1u%>AaqrGfrcz2CbBhC(k1XMw0?mMwX zrASYzOt?8dr2w9EWVw%K_g2UzETu;(`X=M98Sy3|~lNFO+`8^?9N* z8^`abW)H*qnBLc5IL>G=id((wXMiaP|-_ZuHM1#yCh4E2b)6I;b#QnO4rj> zDiL3v>2+4%uZrfGgN4-fA+C^n{}UCujP?tPc!l72$Y>(?6a0d9^3YN}zxLQ%!Gmn6 z8bYETO#C6q&a+eJ4fI~3&2(i%k{In#Jk&QD&&FyuI?koJte?to0MI_mo3y+2#I1_1 zuRh1qPeIJ5A6V&=nG$;rDkp3gPX;7I*wo8M8$!A{6ps}<&;joL00%&K3;k6F?c;ZE zz485eQtptZ=b2|H09&LHB8L<_{?K*^-d` zP9|{CdP1ZKu#CZqrq7ajjWbJ2v9)Ya^oxz?bdSu7$hxQTEV!cxQUUT?2&aP$dHEDrbCeIreywpbgP zP*0^zX^eXR41_Uy?s~9ol~{1^7;_*RrM0 z#ssdx`B_ftq71YKq7-EkD3l4Twuyo7>vFRlRDeq(ld7m&5FXaX`EX!fj^xppm-?ps zR1*n3Fkc0~+r8($!@f zxSm##bdFlVXneP@i0=#DxilK7LhXvW2`wI$<=;W~qE zE(}?E?*}lG2j06#h^-#AcLZMq+8&!WF~oI_eB2d=*2lm3(HBFYMS$` zGha&jn)`*?#q=Rin6 zWEDcfg*Bakwb3SQ=2ZyieQjX~DR+N!-efgo6&?io9KHMzsfeZK6skXSYajXoP)3e6 zJV8D`_ckT}P|q5AYujBgX7Kdavy0`DCH>2f4CR9qH8#~^v9&t$ePYli8TqDi3|>Up zEqUHRR>kDD(AXaRW`#8f-R{!w5v;}E{r3OruArH9{L+O(lcprvFCeKtD)cG_fxDu@ zTm2Q*LyP?EBaNe8SX$?ee~< z&6np%Lb{tP%f2k;XJrz}E9XjCIa^E$G6VWjJX@uj>YuRNZ~;+e+P&G>^{?{Wf_xMI=Hx0S(C~KbSCtF~_gH3pp4a*VU(n zMkb$X0=1NL1q&s048xh#WL>Uxkj>CqQS`8QTkY4kQA88?Y$R>DZg(GVa=`zX;-5n5 znDLc;`jitCH8EbzC4F8b2rmHwDZo#wdg+(=Yxdsdcqk;Vd8k6@-EhpSOOeRPK}o#W zdU{Ht!PUuMad%5wA0KrhXE*`n=1j{5jJ@a)TSRZ5eKt>K--dU0jv zVccczwF=Y_|BzmtO@^){jy173QvdZNuC8hKhL^?btl{hOqaO$9B1f4e$|G($Q5@s3 zw@VN8zQx$to1)pR5`-2%``^js@5m~n;Y}U#8)5Oia_(a!*Bka2^FZxa5y2thGP8xli`#*D%ezkzduRVnXnA5H8`w+PKeI1-lg$pA{*a5e$?C42X`eqn=8{7?rA zvicyQH-LU`Z}0!=iB?eJ+Z-dtf>k8xC=(A z<&aIR#`$5EeGvf-!twM&p6ZC&{INXb{Ys^n!C7cKA0)%(@UZ{_%LgZ-m=&wtE&B>D zop+B`bl%AoB+Xtrt;}oy4XniY$dzWu-cdy)`K!H`kz&k<3VHtubLr$#;gi z)Dq%y3|;=nq(2w&xjtrS}E&leNVg2P7jOz%0+s}_^BACc3*zrqw35$HlUrL?B>OPUs=)b zTUV&dGjF$gYT+SPRT_IWrq*-)cT}@MN8W3nJqv}&akzd|k>;b37h2fRv;OL@h9X?7 ziE%?2N`RcPH}-#+TiY3_cT_>Zv|%aC3$U%sY7LH>^`DI5XP_0eO^xU_zHU~vwplw` z%l8=$F5tDG(0YG7p)+)G!slzsb|p-ZN+?4XI9!3JWtuau5JBDoT5Du^MGn2OA%?xC z?z_RQ9KTLifl}FmX2MYpvHWFI74Mr_bv{p|K*dcWTva+?Gz#sj>XsD%cxT0!aBXR! z`e9Ly24=G1Ub-#Mm7jA4)_2$YgE%yrNd(%>Bmd;v-yR-Yuyc8RtHzdCVwR}e*G%~QJdjh!{+p?tAQd~KFIpZWb{fwaqvPlG#%jy+ueezL zZ%6lv7BhuT5!YTw5N97})p2mlr4Z>-ks^n9LyuqU!+k zO6n8WlCxwTxa2Xl=Vu~k5v6-iPo4gU&_cd_3obz#JsdwklOkIjH*U_Y?hx z?Zg@rntVblxwAi^)TGeg-CJy1t^li=0Eg|YCRfrIAFAWkuf6Ibt_Y_n$U%G{$WQji zypk>3irxB8-}Q+JkaXf+%xo+piMe0jyw42v7NbF^osa{2IkYO&`3}@jcs~(;Jx*AE z(=zD3eX4rL$l}xwDUo&(ME?)?i;OPf3vJ!#kuMBIoL{ zR10}0rG{qYDf{t3iByY?&QgI+Pw$K<#uH;Ej?gO4Xfwc_Jiz$($Fo10FLg-{@N#&W zN6@pZ&!&uK`@$_6Me{jE8*W4}V9z!5u^n-7FD<*6sG`}(ha?eC;-)F!0*NN|1mdu!gpbNbn0@YV;=PZKcM)|Od$MNB5Oo6%UyNx-@=8q!$BqrWCA*@=e_7)w1Tu@o02~2T1*A zdf{*HzKIte@ej#Eb;>%1O5*J&Jrp8&D~; zco^NA&-`SEZod^FAE`B%1o=0hS^cEZe1O6P2y#{N!kD;*wQ)m<=8l>~JXRs{^CSP` z;vJd{tfw7|_LkIcH7B#SZ=V^NEVm&i=le83+(9;Fd)H+VG|^d{Qmap*@SjF5)}Y==8AonPrSF)`tl!UQ zFMZ=^obz19^=Xo)4o#Rwt1&^(lzUBFq}e!&I2<423E$Mz^CiP)-`ToA#Xs+sLmTw4 z54=z3pmO8=swj3rZyXj z1R}v1%Xh-PISP+)Q;MeYX`;9V_Br+A4=UcrKS)aHJu$_dp4MEv)-e~{DTzX@T9Wwd zzB8s!Uacp=JprSq>bEOH%ZxjV^;>KzfSH_bZf~J0momiZWH#pDETHldj0g5k=s-At zKs~~DFMMeI!H(4-xDa0{4g7BKNjNv>oY)-#=r2xZX9ei(x(j^bPnic9YBfK}XJ=Ji z7=&1V{%DVtxNka;RDQm$`VqEOsefN9QX4<+e)`5}mGL`)>BrChj~|9rR1YtsA1>}9 z?2%HfTHX2BzBaj^TDdKGCFU(1A;ellK=n! literal 0 Hc$@ +#include "properties.h" class TagLibExtractorTest : public QObject { @@ -32,6 +33,12 @@ private Q_SLOTS: void test(); + void testNoMetadata(); + void testNoMetadata_data(); + +private: + // Convenience function + const QStringList propertyEnumNames(const QList& key) const; }; #endif // TAGLIBEXTRACTORTEST_H diff --git a/autotests/taglibextractortest.cpp b/autotests/taglibextractortest.cpp --- a/autotests/taglibextractortest.cpp +++ b/autotests/taglibextractortest.cpp @@ -21,20 +21,33 @@ #include "taglibextractortest.h" #include "simpleextractionresult.h" +#include "propertyinfo.h" +//TODO: use QTESTFINDDATA and remove this #include "indexerextractortestsconfig.h" #include "extractors/taglibextractor.h" #include #include #include +Q_DECLARE_METATYPE(KFileMetaData::Property::Property) + using namespace KFileMetaData; QString TagLibExtractorTest::testFilePath(const QString& fileName) const { return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QDir::separator() + fileName; } +const QStringList TagLibExtractorTest::propertyEnumNames(const QList& keys) const +{ + QStringList result; + for (auto key : keys) { + result.append(PropertyInfo(key).name()); + } + return result; +} + void TagLibExtractorTest::test() { QScopedPointer plugin(new TagLibExtractor(this)); @@ -208,4 +221,83 @@ QCOMPARE(resultMp4.properties().value(Property::DiscNumber).toInt(), 1); } +void TagLibExtractorTest::testNoMetadata_data() +{ + const auto expectedKeys = QList{ + Property::BitRate, + Property::Channels, + Property::Duration, + Property::SampleRate, + }; + + QTest::addColumn("path"); + QTest::addColumn("mimeType"); + QTest::addColumn>("expectedKeys"); + QTest::addColumn("failMessage"); + + QTest::addRow("mp3") + << QFINDTESTDATA("samplefiles/no-meta/test.mp3") + << QStringLiteral("audio/mp3") + << expectedKeys << QStringLiteral("Excess properties") + ; + + QTest::addRow("m4a") + << QFINDTESTDATA("samplefiles/no-meta/test.m4a") + << QStringLiteral("audio/mp4") + << expectedKeys << QStringLiteral("Excess properties") + ; + + QTest::addRow("flac") + << QFINDTESTDATA("samplefiles/no-meta/test.flac") + << QStringLiteral("audio/flac") + << expectedKeys << QStringLiteral("Excess properties") + ; + + QTest::addRow("opus") + << QFINDTESTDATA("samplefiles/no-meta/test.opus") + << QStringLiteral("audio/opus") + << expectedKeys << QStringLiteral("Excess properties") + ; + + QTest::addRow("ogg") + << QFINDTESTDATA("samplefiles/no-meta/test.ogg") + << QStringLiteral("audio/ogg") + << expectedKeys << QStringLiteral("Excess properties") + ; + + QTest::addRow("mpc") + << QFINDTESTDATA("samplefiles/no-meta/test.mpc") + << QStringLiteral("audio/x-musepack") + << expectedKeys << QStringLiteral("Excess properties") + ; + +} + +void TagLibExtractorTest::testNoMetadata() +{ + QFETCH(QString, path); + QFETCH(QString, mimeType); + QFETCH(QList, expectedKeys); + QFETCH(QString, failMessage); + + TagLibExtractor plugin{this}; + SimpleExtractionResult extracted(path, mimeType); + plugin.extract(&extracted); + + const auto resultList = extracted.properties(); + const auto resultKeys = resultList.uniqueKeys(); + + qDebug() << "result: " << propertyEnumNames(resultKeys).join(QLatin1String(", "));; + qDebug() << "expected:" << propertyEnumNames(expectedKeys).join(QLatin1String(", ")); + + if (!failMessage.isEmpty()) { + auto excessKeys = resultKeys.toSet() - expectedKeys.toSet(); + const auto message = QStringLiteral("%1: %2") + .arg(failMessage) + .arg(propertyEnumNames(excessKeys.toList()).join(QLatin1String(", "))); + QEXPECT_FAIL("", qPrintable(message), Continue); + } + QCOMPARE(resultKeys, expectedKeys); +} + QTEST_GUILESS_MAIN(TagLibExtractorTest)