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); } }
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); } }
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); } }
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); } }
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); } }
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); }
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); }