Example #1
0
        public void UnitFlac_ExcessPadNoArt()
        {
            var f7 = @"Targets\Singles\07-ExcessPadNoArt.flac";

            using (Stream fs = new FileStream(f7, FileMode.Open))
            {
                var hdr = new byte[0x2C];
                int got = fs.Read(hdr, 0, hdr.Length);
                Assert.AreEqual(hdr.Length, got);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, f7);
                flacModel.CalcHashes(Hashes.Intrinsic, Validations.None);
                Assert.AreEqual(Severity.Warning, flacModel.Data.Issues.MaxSeverity);
                Assert.AreEqual(1, flacModel.Data.Issues.RepairableCount);

                string err = flacModel.RepairArtPadBloat(isFinalRepair: true);
                Assert.IsNull(err);
            }

            using (Stream fs = new FileStream(f7, FileMode.Open))
            {
                var hdr = new byte[0x2C];
                int got = fs.Read(hdr, 0, hdr.Length);
                Assert.AreEqual(hdr.Length, got);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, f7);
                flacModel.CalcHashes(Hashes.Intrinsic, Validations.None);
                Assert.AreEqual(Severity.Noise, flacModel.Data.Issues.MaxSeverity);
                Assert.AreEqual(0, flacModel.Data.Issues.RepairableCount);
            }
        }
Example #2
0
        public void UnitFlac_NoPadNoArt()
        {
            var f5 = @"Targets\Singles\05-NoPadNoArt.flac";

            using (Stream fs = new FileStream(f5, FileMode.Open))
            {
                var hdr = new byte[0x2C];
                int got = fs.Read(hdr, 0, hdr.Length);
                Assert.AreEqual(hdr.Length, got);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, f5);
                flacModel.CalcHashes(Hashes.Intrinsic, Validations.None);
                Assert.AreEqual(Severity.Noise, flacModel.Data.Issues.MaxSeverity);
                Assert.AreEqual(0, flacModel.Data.Issues.RepairableCount);
            }
        }
Example #3
0
        public void UnitFlac_ZeroPadHugeArt()
        {
            var f6 = @"Targets\Singles\06-ZeroPadHugeArt.flac";

            using (Stream fs = new FileStream(f6, FileMode.Open))
            {
                var hdr = new byte[0x2C];
                int got = fs.Read(hdr, 0, hdr.Length);
                Assert.AreEqual(hdr.Length, got);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, f6);
                flacModel.CalcHashes(Hashes.Intrinsic, Validations.None);
                Assert.AreEqual(Severity.Trivia, flacModel.Data.Issues.MaxSeverity);
                Assert.AreEqual(0, flacModel.Data.Issues.RepairableCount);

                string err = flacModel.RepairArtPadBloat(isFinalRepair: true);
                Assert.IsNotNull(err);
            }
        }
Example #4
0
        public void UnitFlac_BadCRC()
        {
            var f4 = @"Targets\Singles\04-BadCRC.flac";

            using (Stream fs = new FileStream(f4, FileMode.Open))
            {
                var hdr = new byte[0x2C];
                int got = fs.Read(hdr, 0, hdr.Length);
                Assert.AreEqual(hdr.Length, got);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, f4);
                flacModel.CalcHashes(Hashes.Intrinsic, Validations.None);

                bool isBadHdr  = flacModel.Data.IsBadHeader;
                bool isBadData = flacModel.Data.IsBadData;

                Assert.IsFalse(isBadHdr);
                Assert.IsTrue(isBadData);
                Assert.AreEqual(Severity.Error, flacModel.Data.Issues.MaxSeverity);
            }
        }
Example #5
0
        public void Test_Flac_1()
        {
            var fn       = @"Targets\Singles\03-Silence.flac";
            var flacInfo = new FileInfo(fn);

            using (var fs = new FileStream(fn, FileMode.Open))
            {
                var hdr = new byte[0x2C];
                fs.Read(hdr, 0, hdr.Length);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, fn);
                Assert.IsNotNull(flacModel.Data);

                Assert.IsTrue(flacModel.Data.Issues.MaxSeverity == Severity.NoIssue);

                var isBadHdr = flacModel.Data.IsBadHeader;
                Assert.IsFalse(isBadHdr);

                var isBadData = flacModel.Data.IsBadData;
                Assert.IsFalse(isBadData);
            }
        }
Example #6
0
        public void Test_Flac_2()
        {
            var fn       = @"Targets\Singles\04-BadCRC.flac";
            var flacInfo = new FileInfo(fn);

            using (var fs = new FileStream(fn, FileMode.Open))
            {
                var hdr = new byte[0x2C];
                fs.Read(hdr, 0, hdr.Length);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, fn);
                Assert.IsNotNull(flacModel);

                flacModel.CalcHashes(Hashes.Intrinsic, Validations.None);
                Assert.IsTrue(flacModel.Data.Issues.MaxSeverity == Severity.Error);

                var isBadHdr = flacModel.Data.IsBadHeader;
                Assert.IsFalse(isBadHdr);

                var isBadData = flacModel.Data.IsBadData;
                Assert.IsTrue(isBadData);
            }
        }
Example #7
0
        public void Test_LogEac_FlacRip_OK1()
        {
            LogEacFormat.Model logModel;
            LogEacFormat       log;

            var fn = @"Targets\Rips\Tester - 2000 - FLAC Silence OK1\Tester - 2000 - FLAC Silence OK1.log";

            using (var fs = new FileStream(fn, FileMode.Open))
            {
                var hdr = new byte[0x28];
                fs.Read(hdr, 0, hdr.Length);
                logModel = LogEacFormat.CreateModel(fs, hdr, fn);
                log      = logModel.Data;
            }

            Assert.AreEqual(3, log.Tracks.Items.Count);

            for (var ix = 0; ix < log.Tracks.Items.Count; ++ix)
            {
                LogEacTrack track = log.Tracks.Items[ix];

                Assert.AreEqual(ix + 1, track.Number);
                Assert.IsTrue(track.HasOK);
                Assert.AreEqual(track.TestCRC, track.CopyCRC);
            }

            var dInfo     = new DirectoryInfo(baseDir + @"\Targets\Rips\Tester - 2000 - FLAC Silence OK1");
            var flacInfos = dInfo.GetFiles("*.flac");

            Assert.AreEqual(3, flacInfos.Length);

            var flacMods = new List <FlacFormat.Model>();

            foreach (var flacInfo in flacInfos)
            {
                var ffs = new FileStream(flacInfo.FullName, FileMode.Open, FileAccess.Read);
                var hdr = new byte[0x28];
                ffs.Read(hdr, 0, hdr.Length);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(ffs, hdr, flacInfo.FullName);
                Assert.IsNotNull(flacModel);

                flacModel.CalcHashes(Hashes.Intrinsic | Hashes.PcmCRC32, Validations.None);
                flacMods.Add(flacModel);
            }

            logModel.MatchFlacs(flacMods);

            for (var ix = 0; ix < log.Tracks.Items.Count; ++ix)
            {
                var track       = log.Tracks.Items[ix];
                var flac        = track.Match;
                var trackNumTag = flac.GetTag("TRACKNUMBER");

                Assert.IsNotNull(flac);
                Assert.AreEqual(1, flac.Issues.Items.Count);
                Assert.AreEqual(Severity.Noise, flac.Issues.MaxSeverity);
                Assert.AreEqual((ix + 1).ToString(), trackNumTag);
                Assert.IsFalse(flac.IsBadHeader);
                Assert.IsFalse(flac.IsBadData);
            }

            Assert.AreEqual(0x6522DF69u, log.Tracks.Items[0].Match.ActualPcmCRC32);
            Assert.AreEqual(0x003E740Du, log.Tracks.Items[1].Match.ActualPcmCRC32);
            Assert.AreEqual(0xFAB5205Fu, log.Tracks.Items[2].Match.ActualPcmCRC32);
        }
Example #8
0
        public void UnitLogEac_OK1()
        {
            var dName1 = @"Targets\Rips\Tester - 2000 - FLAC Silence OK1\";
            var fName1 = dName1 + "Tester - 2000 - FLAC Silence OK1.log";

            LogEacFormat.Model logModel;
            LogEacFormat       log;

            using (Stream fs = new FileStream(fName1, FileMode.Open))
            {
                var hdr = new byte[0x28];
                fs.Read(hdr, 0, hdr.Length);
                logModel = LogEacFormat.CreateModel(fs, hdr, fName1);
                log      = logModel.Data;
            }

            Assert.AreEqual(3, log.Tracks.Items.Count);

            for (var ix = 0; ix < log.Tracks.Items.Count; ++ix)
            {
                LogEacTrack track = log.Tracks.Items[ix];

                Assert.AreEqual(ix + 1, track.Number);
                Assert.IsTrue(track.HasOk);
                Assert.AreEqual(track.TestCRC, track.CopyCRC);
            }

            var dInfo     = new DirectoryInfo(dName1);
            var flacInfos = dInfo.GetFiles("*.flac");

            Assert.AreEqual(3, flacInfos.Length);

            var flacs = new List <FlacFormat>();

            foreach (var flacInfo in flacInfos)
            {
                Stream fs  = new FileStream(flacInfo.FullName, FileMode.Open, FileAccess.Read);
                var    hdr = new byte[0x28];
                fs.Read(hdr, 0, hdr.Length);

                FlacFormat.Model flacModel = FlacFormat.CreateModel(fs, hdr, flacInfo.FullName);
                Assert.IsNotNull(flacModel);

                flacModel.CalcHashes(Hashes.Intrinsic | Hashes.PcmCRC32, Validations.None);
                flacs.Add(flacModel.Data);
            }

            logModel.ValidateRip(flacs, checkTags: true);

            for (var ix = 0; ix < log.Tracks.Items.Count; ++ix)
            {
                var track = log.Tracks.Items[ix];
                var flac  = track.Match as FlacFormat;

                Assert.IsNotNull(flac, "Assure flac.exe in PATH.");

                var trackNumTag = flac.GetTagValue("TRACKNUMBER");

                Assert.AreEqual(1, flac.Issues.Items.Count);
                Assert.AreEqual(Severity.Noise, flac.Issues.MaxSeverity);
                Assert.AreEqual((ix + 1).ToString(), trackNumTag);
                Assert.IsFalse(flac.IsBadHeader);
                Assert.IsFalse(flac.IsBadData);
            }

            Assert.AreEqual(0x6522DF69u, ((FlacFormat)log.Tracks.Items[0].Match).ActualPcmCRC32);
            Assert.AreEqual(0x003E740Du, ((FlacFormat)log.Tracks.Items[1].Match).ActualPcmCRC32);
            Assert.AreEqual(0xFAB5205Fu, ((FlacFormat)log.Tracks.Items[2].Match).ActualPcmCRC32);
        }