// The following code was generated by Microsoft Visual Studio 2005. // The test owner should check each test for validity. using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Text; using System.Collections.Generic; using CUETools.CDImage; using CUETools.AccurateRip; using CUETools.Codecs; namespace CUETools.TestCodecs { /// ///This is a test class for CUETools.AccurateRip.AccurateRipVerify and is intended ///to contain all CUETools.AccurateRip.AccurateRipVerify Unit Tests /// [TestClass()] public class AccurateRipVerifyTest { private TestContext testContextInstance; private CDImageLayout toc; private CDImageLayout toc2; private AccurateRipVerify ar; private AccurateRipVerify ar2; /// ///Gets or sets the test context which provides ///information about and functionality for the current test run. /// public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // //You can use the following additional attributes as you write your tests: // //Use ClassInitialize to run code before running the first test in the class // //[ClassInitialize()] //public static void MyClassInitialize(TestContext testContext) //{ //} // //Use ClassCleanup to run code after all tests in a class have run // //[ClassCleanup()] //public static void MyClassCleanup() //{ //} // //Use TestInitialize to run code before running each test // [TestInitialize()] public void MyTestInitialize() { toc = new CDImageLayout(); toc.AddTrack(new CDTrack(1, 13, 55, true, false)); toc.AddTrack(new CDTrack(2, 68, 31, true, false)); toc.AddTrack(new CDTrack(3, 99, 37, true, false)); toc[1][0].Start = 0; ar = new AccurateRipVerify(toc, null); toc2 = new CDImageLayout(); toc2.AddTrack(new CDTrack(1, 0, toc.AudioLength, true, false)); toc2.AddTrack(new CDTrack(2, toc.AudioLength, 750, true, false)); ar2 = new AccurateRipVerify(toc2, null); Random rnd = new Random(2314); for (int sector = 0; sector < toc2.AudioLength; sector++) { AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 588); buff.Length = 588; for (int i = 0; i < buff.Length; i++) { buff.Samples[i, 0] = rnd.Next(-32768, 32767); buff.Samples[i, 1] = rnd.Next(-32768, 32767); } if (sector < toc.AudioLength) ar.Write(buff); ar2.Write(buff); } } //Use TestCleanup to run code after each test has run // //[TestCleanup()] //public void MyTestCleanup() //{ //} // #endregion /// ///A test for CRC32 /// [TestMethod()] public void CRC32Test() { Assert.AreEqual(2884775698, ar.CRC32(0), "CRC32[0] was not set correctly."); Assert.AreEqual(0474131972, ar.CRC32(1), "CRC32[1] was not set correctly."); Assert.AreEqual(1685633822, ar.CRC32(2), "CRC32[2] was not set correctly."); Assert.AreEqual(2747309238, ar.CRC32(3), "CRC32[3] was not set correctly."); Assert.AreEqual(2884775698, ar2.CRC32(1), "CRC32[1](2) was not set correctly."); } /// ///A test for CRC32 /// [TestMethod()] public void CRC32Test1() { Assert.AreEqual(2802501111, ar.CRC32(0, 13), "CRC32[0][13] was not set correctly."); Assert.AreEqual(1987827634, ar.CRC32(0, -7), "CRC32[0][-7] was not set correctly."); Assert.AreEqual(1624004597, ar.CRC32(1, 13), "CRC32[1][13] was not set correctly."); Assert.AreEqual(2300462193, ar.CRC32(1, -7), "CRC32[1][-7] was not set correctly."); Assert.AreEqual(0685357040, ar.CRC32(2, 15), "CRC32[2][15] was not set correctly."); Assert.AreEqual(4050516109, ar.CRC32(2, -1), "CRC32[2][-1] was not set correctly."); Assert.AreEqual(1860362251, ar.CRC32(3, 15), "CRC32[3][15] was not set correctly."); Assert.AreEqual(0761448415, ar.CRC32(3, -1), "CRC32[3][-1] was not set correctly."); Assert.AreEqual(1987827634, ar2.CRC32(1, -7), "CRC32[1,13](2) was not set correctly."); } /// ///A test for CRC /// [TestMethod()] public void CRCTest1() { Assert.AreEqual(0095215819, ar.CRC(0, -1), "CRC[0][-1] was not set correctly."); Assert.AreEqual(4179900079, ar.CRC(0, 99), "CRC[0][99] was not set correctly."); Assert.AreEqual(3756565509, ar.CRC(1, -3), "CRC[1][-3] was not set correctly."); Assert.AreEqual(1882341590, ar.CRC(1, 11), "CRC[1][11] was not set correctly."); Assert.AreEqual(4121006760, ar.CRC(2, -4), "CRC[2][-4] was not set correctly."); Assert.AreEqual(3648746406, ar.CRC(2, 55), "CRC[2][55] was not set correctly."); } /// ///A test for CRC /// [TestMethod()] public void CRCTest() { Assert.AreEqual(1190199900, ar.CRC(0), "CRC[0] was not set correctly."); Assert.AreEqual(1914801336, ar.CRC(1), "CRC[1] was not set correctly."); Assert.AreEqual(1759975763, ar.CRC(2), "CRC[2] was not set correctly."); } /// ///A test for CRCWONULL /// [TestMethod()] public void CRCWONULLTest1() { Assert.AreEqual(3376349517, ar.CRCWONULL(2, 19), "CRC32WONULL[2][19] was not set correctly."); Assert.AreEqual(0162318931, ar.CRCWONULL(2, -2), "CRC32WONULL[2][-2] was not set correctly."); } /// ///A test for CRCWONULL /// [TestMethod()] public void CRCWONULLTest() { Assert.AreEqual(0509527097, ar.CRCWONULL(0), "CRC32WONULL[0] was not set correctly."); Assert.AreEqual(0474131972, ar.CRCWONULL(1), "CRC32WONULL[1] was not set correctly."); Assert.AreEqual(1405611463, ar.CRCWONULL(2), "CRC32WONULL[2] was not set correctly."); Assert.AreEqual(2747309238, ar.CRCWONULL(3), "CRC32WONULL[3] was not set correctly."); Assert.AreEqual(0509527097, ar2.CRCWONULL(1), "CRC32WONULL[1](2) was not set correctly."); } /// ///A test for CRC450 /// [TestMethod()] public void CRC450Test() { Assert.AreEqual(1480802016, ar2.CRC450(1, 00), "CRC450[1,00] was not set correctly."); Assert.AreEqual(2012115554, ar2.CRC450(1, 55), "CRC450[1,55] was not set correctly."); Assert.AreEqual(1483829604, ar2.CRC450(1, -3), "CRC450[1,-3] was not set correctly."); } /// ///OffsetSafeCRCRecord /// [TestMethod()] public void OffsetSafeCRCRecordTest() { OffsetSafeCRCRecord[] records = new OffsetSafeCRCRecord[5000]; for (int i = 0; i < records.Length; i++) { var arv = new AccurateRipVerify(toc, null); Random rnd = new Random(2314); Random rnd2 = new Random(2314); for (int k = 0; k < i; k++) { rnd.Next(-32768, 32767); rnd.Next(-32768, 32767); } int chunk; for (int k = 0; k < toc.AudioLength * 588; k += chunk) { chunk = Math.Min(512 + rnd2.Next(512), (int)toc.AudioLength * 588 - k); AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, chunk); buff.Length = chunk; for (int s = 0; s < chunk; s++) { buff.Samples[s, 0] = rnd.Next(-32768, 32767); buff.Samples[s, 1] = rnd.Next(-32768, 32767); } arv.Write(buff); } records[i] = arv.OffsetSafeCRC; arv.Close(); } for (int i = 0; i < records.Length; i++) { int real_off = -i; int off; bool found = records[0].FindOffset(records[i], out off); if (real_off > 4096 || real_off < -4096) { Assert.IsFalse(found, string.Format("FindOffset found offset where it shouldn't have, real offset {0}", real_off)); } else { Assert.IsTrue(found, string.Format("FindOffset failed to detect offset, real offset {0}", real_off)); Assert.AreEqual(real_off, off, string.Format("FindOffset returned {0}, should be {1}", off, real_off)); } real_off = i; found = records[i].FindOffset(records[0], out off); if (real_off > 4096 || real_off < -4096) { Assert.IsFalse(found, string.Format("FindOffset found offset where it shouldn't have, real offset {0}", real_off)); } else { Assert.IsTrue(found, string.Format("FindOffset failed to detect offset, real offset {0}", real_off)); Assert.AreEqual(real_off, off, string.Format("FindOffset returned {0}, should be {1}", off, real_off)); } } } } }