public virtual void TestShouldExtractChapterTOCAndChapterFramesFromMp3() { byte[] buffer = TestHelper.LoadFile("Resources/v23tagwithchapters.mp3"); ID3v2 id3tag = ID3v2TagFactory.CreateTag(buffer); IList<ID3v2ChapterFrameData> chapters = id3tag.GetChapters(); Assert.AreEqual(3, chapters.Count); ID3v2ChapterFrameData chapter1 = chapters[0]; Assert.AreEqual("ch1", chapter1.GetId()); Assert.AreEqual(0, chapter1.GetStartTime()); Assert.AreEqual(5000, chapter1.GetEndTime()); Assert.AreEqual(-1, chapter1.GetStartOffset()); Assert.AreEqual(-1, chapter1.GetEndOffset()); IList<ID3v2Frame> subFrames1 = chapter1.GetSubframes(); Assert.AreEqual(1, subFrames1.Count); ID3v2Frame subFrame1 = subFrames1[0]; Assert.AreEqual("TIT2", subFrame1.GetId()); ID3v2TextFrameData frameData1 = new ID3v2TextFrameData(false, subFrame1.GetData()); Assert.AreEqual("start", frameData1.GetText().ToString()); ID3v2ChapterFrameData chapter2 = chapters[1]; Assert.AreEqual("ch2", chapter2.GetId()); Assert.AreEqual(5000, chapter2.GetStartTime()); Assert.AreEqual(10000, chapter2.GetEndTime()); Assert.AreEqual(-1, chapter2.GetStartOffset()); Assert.AreEqual(-1, chapter2.GetEndOffset()); IList<ID3v2Frame> subFrames2 = chapter2.GetSubframes(); Assert.AreEqual(1, subFrames2.Count); ID3v2Frame subFrame2 = subFrames2[0]; Assert.AreEqual("TIT2", subFrame2.GetId()); ID3v2TextFrameData frameData2 = new ID3v2TextFrameData(false, subFrame2.GetData()); Assert.AreEqual("5 seconds", frameData2.GetText().ToString()); ID3v2ChapterFrameData chapter3 = chapters[2]; Assert.AreEqual("ch3", chapter3.GetId()); Assert.AreEqual(10000, chapter3.GetStartTime()); Assert.AreEqual(15000, chapter3.GetEndTime()); Assert.AreEqual(-1, chapter3.GetStartOffset()); Assert.AreEqual(-1, chapter3.GetEndOffset()); IList<ID3v2Frame> subFrames3 = chapter3.GetSubframes(); Assert.AreEqual(1, subFrames3.Count); ID3v2Frame subFrame3 = subFrames3[0]; Assert.AreEqual("TIT2", subFrame3.GetId()); ID3v2TextFrameData frameData3 = new ID3v2TextFrameData(false, subFrame3.GetData()); Assert.AreEqual("10 seconds", frameData3.GetText().ToString()); }