namespace Amphora.UnitTests { public class Lcg64Tests : UnitTestSharp.TestFixture { public class NextUInt64Tests : UnitTestSharp.TestFixture { public void MatchesTheRecurrenceFromSeed42() { var generator = new Lcg64(42); CheckEqual(0x91778aed87ee5eb1UL, generator.NextUInt64()); CheckEqual(0x39b7f8a5c64cf56cUL, generator.NextUInt64()); CheckEqual(0x69afc5a5e88b394bUL, generator.NextUInt64()); CheckEqual(0xa161c43f85f3c87eUL, generator.NextUInt64()); } public void LowestBitAlternates() { var generator = new Lcg64(42); CheckEqual(1UL, generator.NextUInt64() & 1); CheckEqual(0UL, generator.NextUInt64() & 1); CheckEqual(1UL, generator.NextUInt64() & 1); CheckEqual(0UL, generator.NextUInt64() & 1); } } public class NextUInt32Tests : UnitTestSharp.TestFixture { public void IsTheUpperHalfOfTheNext64BitDraw() { var generator = new Lcg64(42); CheckEqual(0x91778aedU, generator.NextUInt32()); CheckEqual(0x39b7f8a5U, generator.NextUInt32()); } } } }