mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 10:04:24 +00:00
260 lines
8.6 KiB
C#
260 lines
8.6 KiB
C#
// 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
|
|
{
|
|
/// <summary>
|
|
///This is a test class for CUETools.AccurateRip.AccurateRipVerify and is intended
|
|
///to contain all CUETools.AccurateRip.AccurateRipVerify Unit Tests
|
|
///</summary>
|
|
[TestClass()]
|
|
public class AccurateRipVerifyTest
|
|
{
|
|
|
|
|
|
private TestContext testContextInstance;
|
|
private CDImageLayout toc;
|
|
private CDImageLayout toc2;
|
|
private AccurateRipVerify ar;
|
|
private AccurateRipVerify ar2;
|
|
|
|
/// <summary>
|
|
///Gets or sets the test context which provides
|
|
///information about and functionality for the current test run.
|
|
///</summary>
|
|
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
|
|
|
|
|
|
/// <summary>
|
|
///A test for CRC32
|
|
///</summary>
|
|
[TestMethod()]
|
|
public void CRC32Test()
|
|
{
|
|
Assert.AreEqual<uint>(2884775698, ar.CRC32(0), "CRC32[0] was not set correctly.");
|
|
Assert.AreEqual<uint>(0474131972, ar.CRC32(1), "CRC32[1] was not set correctly.");
|
|
Assert.AreEqual<uint>(1685633822, ar.CRC32(2), "CRC32[2] was not set correctly.");
|
|
Assert.AreEqual<uint>(2747309238, ar.CRC32(3), "CRC32[3] was not set correctly.");
|
|
|
|
Assert.AreEqual<uint>(2884775698, ar2.CRC32(1), "CRC32[1](2) was not set correctly.");
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for CRC32
|
|
///</summary>
|
|
[TestMethod()]
|
|
public void CRC32Test1()
|
|
{
|
|
Assert.AreEqual<uint>(2802501111, ar.CRC32(0, 13), "CRC32[0][13] was not set correctly.");
|
|
Assert.AreEqual<uint>(1987827634, ar.CRC32(0, -7), "CRC32[0][-7] was not set correctly.");
|
|
Assert.AreEqual<uint>(1624004597, ar.CRC32(1, 13), "CRC32[1][13] was not set correctly.");
|
|
Assert.AreEqual<uint>(2300462193, ar.CRC32(1, -7), "CRC32[1][-7] was not set correctly.");
|
|
Assert.AreEqual<uint>(0685357040, ar.CRC32(2, 15), "CRC32[2][15] was not set correctly.");
|
|
Assert.AreEqual<uint>(4050516109, ar.CRC32(2, -1), "CRC32[2][-1] was not set correctly.");
|
|
Assert.AreEqual<uint>(1860362251, ar.CRC32(3, 15), "CRC32[3][15] was not set correctly.");
|
|
Assert.AreEqual<uint>(0761448415, ar.CRC32(3, -1), "CRC32[3][-1] was not set correctly.");
|
|
|
|
Assert.AreEqual<uint>(1987827634, ar2.CRC32(1, -7), "CRC32[1,13](2) was not set correctly.");
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for CRC
|
|
///</summary>
|
|
[TestMethod()]
|
|
public void CRCTest1()
|
|
{
|
|
Assert.AreEqual<uint>(0095215819, ar.CRC(0, -1), "CRC[0][-1] was not set correctly.");
|
|
Assert.AreEqual<uint>(4179900079, ar.CRC(0, 99), "CRC[0][99] was not set correctly.");
|
|
Assert.AreEqual<uint>(3756565509, ar.CRC(1, -3), "CRC[1][-3] was not set correctly.");
|
|
Assert.AreEqual<uint>(1882341590, ar.CRC(1, 11), "CRC[1][11] was not set correctly.");
|
|
Assert.AreEqual<uint>(4121006760, ar.CRC(2, -4), "CRC[2][-4] was not set correctly.");
|
|
Assert.AreEqual<uint>(3648746406, ar.CRC(2, 55), "CRC[2][55] was not set correctly.");
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for CRC
|
|
///</summary>
|
|
[TestMethod()]
|
|
public void CRCTest()
|
|
{
|
|
Assert.AreEqual<uint>(1190199900, ar.CRC(0), "CRC[0] was not set correctly.");
|
|
Assert.AreEqual<uint>(1914801336, ar.CRC(1), "CRC[1] was not set correctly.");
|
|
Assert.AreEqual<uint>(1759975763, ar.CRC(2), "CRC[2] was not set correctly.");
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for CRCWONULL
|
|
///</summary>
|
|
[TestMethod()]
|
|
public void CRCWONULLTest1()
|
|
{
|
|
Assert.AreEqual<uint>(3376349517, ar.CRCWONULL(2, 19), "CRC32WONULL[2][19] was not set correctly.");
|
|
Assert.AreEqual<uint>(0162318931, ar.CRCWONULL(2, -2), "CRC32WONULL[2][-2] was not set correctly.");
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for CRCWONULL
|
|
///</summary>
|
|
[TestMethod()]
|
|
public void CRCWONULLTest()
|
|
{
|
|
Assert.AreEqual<uint>(0509527097, ar.CRCWONULL(0), "CRC32WONULL[0] was not set correctly.");
|
|
Assert.AreEqual<uint>(0474131972, ar.CRCWONULL(1), "CRC32WONULL[1] was not set correctly.");
|
|
Assert.AreEqual<uint>(1405611463, ar.CRCWONULL(2), "CRC32WONULL[2] was not set correctly.");
|
|
Assert.AreEqual<uint>(2747309238, ar.CRCWONULL(3), "CRC32WONULL[3] was not set correctly.");
|
|
Assert.AreEqual<uint>(0509527097, ar2.CRCWONULL(1), "CRC32WONULL[1](2) was not set correctly.");
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for CRC450
|
|
///</summary>
|
|
[TestMethod()]
|
|
public void CRC450Test()
|
|
{
|
|
Assert.AreEqual<uint>(1480802016, ar2.CRC450(1, 00), "CRC450[1,00] was not set correctly.");
|
|
Assert.AreEqual<uint>(2012115554, ar2.CRC450(1, 55), "CRC450[1,55] was not set correctly.");
|
|
Assert.AreEqual<uint>(1483829604, ar2.CRC450(1, -3), "CRC450[1,-3] was not set correctly.");
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///OffsetSafeCRCRecord
|
|
///</summary>
|
|
[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));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|