public void Can_Parse_Nonstandard_Noncompliant_CueSheet_Track_Level_Commands()
        {
            using (Stream stream = GetNonstandardNoncompliantCueSheet())
            {
                var      parser   = new CueSheetParser(stream);
                CueSheet cueSheet = parser.Parse();

                File file1 = cueSheet.Files[0];

                Assert.AreEqual(1, file1.Tracks.Count);

                Track track1 = file1.Tracks[0];

                Assert.AreEqual(1, track1.TrackNum);
                Assert.AreEqual("AUDIO", track1.TrackType);
                Assert.AreEqual("Punish My Heaven", track1.Title);
                Assert.AreEqual("Dark Tranquillity", track1.Performer);
                Assert.AreEqual("DCP", track1.Flags);

                Assert.AreEqual(1, track1.Indexes.Count);

                Index index1 = track1.Indexes[0];

                Assert.AreEqual(1, index1.IndexNum);
                Assert.AreEqual(0, index1.IndexTime.Minutes);
                Assert.AreEqual(0, index1.IndexTime.Seconds);
                Assert.AreEqual(0, index1.IndexTime.Frames);

                File file9 = cueSheet.Files[9];

                track1 = file9.Tracks[0];

                Assert.AreEqual(10, track1.TrackNum);
                Assert.AreEqual("AUDIO", track1.TrackType);
                Assert.AreEqual("Mine Is The Grandeur...", track1.Title);
                Assert.AreEqual("Dark Tranquillity", track1.Performer);
                Assert.AreEqual("DCP", track1.Flags);

                Assert.AreEqual(2, track1.Indexes.Count);

                Index index0 = track1.Indexes[0];

                Assert.AreEqual(0, index0.IndexNum);
                Assert.AreEqual(5, index0.IndexTime.Minutes);
                Assert.AreEqual(41, index0.IndexTime.Seconds);
                Assert.AreEqual(65, index0.IndexTime.Frames);

                index1 = track1.Indexes[1];

                Assert.AreEqual(1, index1.IndexNum);
                Assert.AreEqual(0, index1.IndexTime.Minutes);
                Assert.AreEqual(0, index1.IndexTime.Seconds);
                Assert.AreEqual(0, index1.IndexTime.Frames);
            }
        }
        public void Can_Parse_Standard_CueSheet_Track_Level_Commands()
        {
            using (Stream stream = GetStandardCueSheet())
            {
                var      parser   = new CueSheetParser(stream);
                CueSheet cueSheet = parser.Parse();

                File file = cueSheet.Files[0];

                Assert.AreEqual(4, file.Tracks.Count);

                Track track1 = file.Tracks[0];

                Assert.AreEqual(1, track1.TrackNum);
                Assert.AreEqual("AUDIO", track1.TrackType);
                Assert.AreEqual("Black winter day", track1.Title);
                Assert.AreEqual("AMORPHIS", track1.Performer);

                Assert.AreEqual(1, track1.Indexes.Count);

                Index index1 = track1.Indexes[0];

                Assert.AreEqual(1, index1.IndexNum);
                Assert.AreEqual(0, index1.IndexTime.Minutes);
                Assert.AreEqual(0, index1.IndexTime.Seconds);
                Assert.AreEqual(0, index1.IndexTime.Frames);

                Track track4 = file.Tracks[3];

                Assert.AreEqual(4, track4.TrackNum);
                Assert.AreEqual("AUDIO", track4.TrackType);
                Assert.AreEqual("Moon and sun Part II: North's son", track4.Title);
                Assert.AreEqual("AMORPHIS", track4.Performer);

                Assert.AreEqual(2, track4.Indexes.Count);

                Index index0 = track4.Indexes[0];

                Assert.AreEqual(0, index0.IndexNum);
                Assert.AreEqual(8, index0.IndexTime.Minutes);
                Assert.AreEqual(45, index0.IndexTime.Seconds);
                Assert.AreEqual(55, index0.IndexTime.Frames);

                index1 = track4.Indexes[1];

                Assert.AreEqual(1, index1.IndexNum);
                Assert.AreEqual(8, index1.IndexTime.Minutes);
                Assert.AreEqual(47, index1.IndexTime.Seconds);
                Assert.AreEqual(0, index1.IndexTime.Frames);
            }
        }
        public void Can_Parse_Nonstandard_CueSheet_Track_Level_Commands()
        {
            using (Stream stream = GetNonstandardCueSheet())
            {
                var      parser   = new CueSheetParser(stream);
                CueSheet cueSheet = parser.Parse();

                File file1 = cueSheet.Files[0];

                Assert.AreEqual(1, file1.Tracks.Count);

                Track track1 = file1.Tracks[0];

                Assert.AreEqual(1, track1.TrackNum);
                Assert.AreEqual("AUDIO", track1.TrackType);
                Assert.AreEqual("Mass Hypnosis", track1.Title);
                Assert.AreEqual("Nasum", track1.Performer);

                Assert.AreEqual(1, track1.Indexes.Count);

                Index index1 = track1.Indexes[0];

                Assert.AreEqual(1, index1.IndexNum);
                Assert.AreEqual(0, index1.IndexTime.Minutes);
                Assert.AreEqual(0, index1.IndexTime.Seconds);
                Assert.AreEqual(0, index1.IndexTime.Frames);

                File file25 = cueSheet.Files[24];

                track1 = file25.Tracks[0];

                Assert.AreEqual(25, track1.TrackNum);
                Assert.AreEqual("AUDIO", track1.TrackType);
                Assert.AreEqual("Sometimes Dead is Better", track1.Title);
                Assert.AreEqual("Nasum", track1.Performer);

                Assert.AreEqual(1, track1.Indexes.Count);

                index1 = track1.Indexes[0];

                Assert.AreEqual(1, index1.IndexNum);
                Assert.AreEqual(0, index1.IndexTime.Minutes);
                Assert.AreEqual(0, index1.IndexTime.Seconds);
                Assert.AreEqual(0, index1.IndexTime.Frames);
            }
        }