From 269e78f1a013a9673c62075a68d38a14d47fbf34 Mon Sep 17 00:00:00 2001
From: Tsuda Kageyu <tsuda.kageyu@gmail.com>
Date: Tue, 21 Oct 2014 00:16:43 +0900
Subject: [PATCH] Add a test for duplicate ID3v2 tags.

---
 tests/data/duplicate_id3v2.mp3 | Bin 0 -> 10138 bytes
 tests/test_mpeg.cpp            |  14 ++++++++++++++
 2 files changed, 14 insertions(+)
 create mode 100644 tests/data/duplicate_id3v2.mp3

diff --git a/tests/data/duplicate_id3v2.mp3 b/tests/data/duplicate_id3v2.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..34f4f158ce454d71677f450d1db8c40abbb85d30
GIT binary patch
literal 10138
zcmeHMc~p~E7Jo@3VOJ2atcINck%Vjn#1=@vpg;&gENC?$0mG6I78L|>Y;nN`3tC(l
zD^O^qQp5$+PPGaswTKoK7u2aB!)O(kiddI6bHA|IGjpcX{xRqD^yJHV$@jf`-(7z9
zCFlNL1Uv=-!R54A95O!?Zmbc)X@3qu8AyuqP$pV9{t^rMbP&%N7iXhfq(C|FKB*uO
z`%kVHgD@9t$S1`@kzfIcJrPQX@=J&cQ)OhxlXDd+Wkj|rFH68fndvv5Bvjvft5G(?
z!)9n{&G>>+-GX?fLY*fMS7gWqGPyEWk)n`iqYxB@B9H_v0cSE4j6{eGFFK+jE@C4l
zV!&t6xK`GrmQbfPrpW-U02mWmxszIAoh3S0^VeCVAr3@89+Q<WCSkT}xk5G>$E0*D
z#VEN<AqmTn<m3pm6`7Lkd`R)jqNP2qw+H5}tC?Hp?ZtB%H|O#nnEZD*W=`rVa{&lY
z+|8!A8D!=QYWwdGel+^(=D1OcPVsdVaq?u9QZ^O`WTL<H2<Q>eBcMk>kANNlJpy_J
z^a$t?&?BHn;QxYvfXA4E873p~7)=H)4KzCvsbDGwDS;^Gz+F5_1=5@kcOfVR2(%n!
z!@a-mISP$aaNw7)bUp|%6*5Wy`m2P6WE2i$I0q$<6Z0G-7KP0Nrv@-Mesuac!?&Mg
z_!+u23UDF^0*$%P0w*zXppQjM_oIt>qA<7{WBqjC(_CP~RAAT>@8YnSXizZG*%ZQw
zffA)7aTK2ila9Jc9)yz$BNu|h97gG!Dd0)GaN$Bw8;d6ng#m#VAR!XN9G0I1mMABb
z<l{jn17dl)a|ev`lVO2Or_MwyIIxfd=Vt)-mqUy!h*1VcsKD=2Ko$UZT$o|Opn{AJ
zK(PQ@88CYpNNJ!;pKuqfa~Gv^r2xfHz(}IQxd5ELJ{^I2Lb<ZQAr>>1;Ml3jSZX*x
z9!m9F%!Gi0i4&FAS<xYKEJ`dl4h$+pDu)>ieeC3d268HVvUHWfa>is5cn<&^=rEE&
zhdq&1{{IN){~7`>Mg$=J%1(-l!Oo9<$L<#Lf9C?-e#4P|6$KFhjGbFy-y}KIIsyuV
zZMm#pY&JTSVq#OtbS04JpdQ<7GJu>0Ws$<>^4AqD0IacKV9x=%IXXPkP>4_f->zwk
zA#FG!N|pPiWyw<!0co#lZ=q?C;ev34!{N}^@Iu<_@C7j>5=le@LlTK(WMpV;YGr0>
zVq$7*Ien^?quop=M>_`xvfC_AvWu^)gM$}`;!C45nar7<+~5HJ*|Qi-f6NHZ$jHdl
z#Pkg_vp4*m9i07t_oY37EDYhdCY*qCL3j%s!2+l4Kn@7u@dSwW^+hxw;RsXkh9C`{
zhHwPD0Wu&N<IHp#I6PqrvM?Z8I@71Sgv9PAS-CPLIX%{H{){+v_Fu{?Y}`Y`L}F=8
z?SYdQ`X7T0dmO?X{L;e|9Dzu}8-S2vf$%uo6l20`G3LR7t|nSex3YG2WyF>ngv6cH
z_90Wy!CMe4(3>bEf3W$Rn?iTW4ECPy1`KznJi9Z8b!CGJ_xPvw{z$TD<W}9$oewLY
z8;>TIYl51V$)ba7mmiE-^tgAXU0-ATdxslahmX8)O}^Q!mfyEaaeL8gK@l!noF<Aa
z`8tqaa)v`%8bm2&C!8K=9{93tC1v4U(Fcd>lV8*zYcKWD=Dx;jyyuIuul%FHIbIVH
z{=MQ>z^%gc^IbiwyC3$=VbL1x%`57|^XKmm4s!Q%KV9r@{wDp|u7~p&v>KzxCu^G5
z)=qokZO)F#>-@Rrzy@{Kk`M1Z2zV89uy}N{hA^`<ruW#3shaTj9Xof<;^psP3t~g9
z<!gd26!$%K!VxuF!^#q0?F-u*O|p+X!4^(=r}WD7UfWkjk7_GdRvC-3*KT<k?qPDW
z{6TMjq~`GF5^_#dPElmU-x5mv`n|(e9*S6O)=)RQ#5Zu(T71b<^Pc&!C%W#EmfOw<
ze>>YICe^Hcx~+NFtcEzJ6~cLZMaYF+jq!D!Bf%qsjLXC!=b_E#6qP;I>y6lnniq#}
zC4Htkd2E5{bN{mkzuR_E8tNN=yahe^Y-D{bE-_;D%a7U@5KRVO%=Z1_=cx><<>D0)
zi-U!@q1)-2`}wnt50>v{{FQcuyO|VQwB<se)ppIAtLk<se`{TZX2Dl0@q<ewq4m#y
zv~jtelhx&ahx(QEt=jb`nq!Z8{8M<mdU=A)K+~NciB5YSO7165{j^?alxHcbucz4M
zCaKd`agQauz3<GW`@zo{vGg-(dFMmRO48J_8(PHjCN1S$RUJFh@RrAMixO$9+LU$b
z^R;1(A8xYxfd6e%TLkgOTJtL{1)Vj{KASh5mQX`Ks<^!@#!$#kEUFCJEU_9c_dmyW
zH|To5(%D@aTJG$clqP6ti@xiYHY2#|ncbp_0gu5>yL;2ubqf`d<ZFkivKu*H2p;vV
zVTU~pFUA*oHFnHoratm)E9DR57MRpKln<#I<~~b%w2$lLV6^?BN5QaDz@qheZqr2X
zeW)(_@j;OJ_fI*OWUE?Mif(W#vhEs{JDxi5!ncm<(GkbYVg!cWT*u$$6U5!<b9UxO
zFB|;4IxD|<PkgA_SK}SO!6vqM@0UrNDsSw3bvHUH+SPYMrn^~d**4K-QOM;5Q+r%D
zIW-5}Nc?Q>j=!(U@OC@xGH+ddN$#xXU0$;nlM_!@Wi2{iS<`+Oist?gpHG+VsX26?
zT0{2gdp11uQzic5?0|mTVnW+sSI6zPBqJIAT9Kq6v$dL)5fFa~XaDf3`{U<b$%G6~
z<6Z7C4b+A`>6D~`!=8!J?NWB%sDmm#E$5Z^^UFKB9?$SHAj+ys@(y2UIuK!B+?#Rs
zXeZ-~>lu4Zw^^_E9crzpTVd}kxVp)#twkB#)^_T|?DmsY@0Ofd|1Qhq+>+3_(j<1=
zGMA3P@bBN8w=?AYb^<rTw|{%0)i$^JMcGT#_HI^d@FMfkd&8?AW>UVYIyj~Er#U|4
zPuE%=a~mC9@P09^`)pj*7Di}+M@3gutM69wa+3$ERxmB+cRUR*>MQiBo!M~k!Nq>Q
zt8et?klc?e7`}HmJRUYoDDgg1{K-Pkt((->qBZ>w2Fhv)b_EKazb3q0)H>s*^!2ts
zsCLjcYECWk3&`uBEVDRwEW~A~y{hcN_2B|(88LZo!UEf3zRzWq)TfDU9VoThQ~pk&
zv-><V@}4?#L5o1bO({If-(J?4WFGvqC@>O#^mh8LQ?0}%#$Z{DGAOR9gYHHNNH=zL
z8L>`_-x!&hoR#@ivz>au%3Y3126u$A(a^hOPEe7ksQP8T<L>Ru{W}+*{^8*dhMDvG
zFPo5Ysb{W>G))07+=i8ZPxG9r&Iq})-{w*y_ho}k{73)}_ZDH8JgT~1{g(mWiv7I8
zPfPoG-S771^Vz)0sFSmmq?PyGMl(N4s36gO-M@_U6Q~91z#bcEs5tzUSLX4{NAR6H
z%T6#3Ro<f8zVz#EvX2eUTz5r_ED}Zy>kD_hLD_n!dQC-NrtAZ%M0rm<hgVlP<nktI
zs3NxKc<0CJDc?nI*>As!Z|%2()BQ$^7PTJx`5@ozaUkFPQg(!u!o02W?4EnyKJhVU
z?<L3ySsBZRw$Ir8B<MYB>C&njg*TguGp!Q#_8D)b#49e9=GT2q91=(ik9G$pZK3jG
zsK|_0RY7g$JZMqo*mm5AP5kHAK4ko{)L4S%d2K1HesEv*!PV-K_dRWPZt$<k)imq~
zyI69dgi>6vq4$~UuuIMA$aOK7v}pUQWwjbbzS%e3&pR)$S@<BIOV=fy4?T8PowqIj
zWW?3d*+q-KJ*-7`ULPmE6Q(n|fotjbq5CzzeM#pUkF+FSiRE}ctu6H?S{_}rS$i!$
z9R4Ok@Fy2qmYbUu=;xQ2m!n9QW=j;xf?2BUR3xF%I4ougjheztVN#iLP70NqoWh}U
z`~zsT6e(B2<S@l?F+wo%JKD3c?taCuc3Z#fq$gVW6zG&_(73Xor@|UqtihE+mo?U1
zaiG;@!5r32v7sHtntCp1N#O}=dztXWfzFKsOeP-tLvw;&q(h^QHSri_dfkzabC9Ut
z9Ob|Fhhe(zPzh$U!2!ks;!)g0!yWOP&BlQNEH;eWU`AAsa0(C(jLc!QLVx{95YWE-
xK!&D1`jceyCrm^8vO;!zv%Wxo+|ptd(&{Vp$1M=jSLhF199?Mo3jNV5^e<&#M7#h1

literal 0
HcmV?d00001

diff --git a/tests/test_mpeg.cpp b/tests/test_mpeg.cpp
index 44925cac..024da6a0 100644
--- a/tests/test_mpeg.cpp
+++ b/tests/test_mpeg.cpp
@@ -16,6 +16,7 @@ class TestMPEG : public CppUnit::TestFixture
   CPPUNIT_TEST(testSaveID3v24);
   CPPUNIT_TEST(testSaveID3v24WrongParam);
   CPPUNIT_TEST(testSaveID3v23);
+  CPPUNIT_TEST(testDuplicateID3v2);
   CPPUNIT_TEST_SUITE_END();
 
 public:
@@ -92,6 +93,19 @@ public:
     }
   }
 
+  void testDuplicateID3v2()
+  {
+    ScopedFileCopy copy("duplicate_id3v2", ".mp3");
+    string newname = copy.fileName();
+
+    MPEG::File f(newname.c_str());
+
+    // duplicate_id3v2.mp3 has duplicate ID3v2 tags.
+    // Sample rate will be 32000 if can't skip the second tag.
+
+    CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate());
+  }
+
 };
 
 CPPUNIT_TEST_SUITE_REGISTRATION(TestMPEG);