namespace Amphora.UnitTests { public class Xorshift64Tests : UnitTestSharp.TestFixture { public class SeedCtorTests : UnitTestSharp.TestFixture { public void ReplacesAZeroSeedWithOne() { var zero = new Xorshift64(0); var one = new Xorshift64(1); CheckEqual(one.NextUInt64(), zero.NextUInt64()); } } public class NextUInt64Tests : UnitTestSharp.TestFixture { public void MatchesTheRecurrenceFromSeedOne() { var generator = new Xorshift64(1); CheckEqual(1082269761UL, generator.NextUInt64()); CheckEqual(0x100041060c011441UL, generator.NextUInt64()); CheckEqual(0x9b1e842f6e862629UL, generator.NextUInt64()); CheckEqual(0xf554f503555d8025UL, generator.NextUInt64()); } } public class NextUInt32Tests : UnitTestSharp.TestFixture { public void IsTheUpperHalfOfTheNext64BitDraw() { var generator = new Xorshift64(1); generator.NextUInt64(); generator.NextUInt64(); CheckEqual(0x9b1e842fU, generator.NextUInt32()); CheckEqual(0xf554f503U, generator.NextUInt32()); } } } }