public void ChooseSByteTest() { var g = new Generator("ChooseSByteTest"); for (int i = 0; i < 100; i++) { var a = (ulong)g.SByte(); var b = (ulong)g.SByte(); var s = (ulong)g.SByte(); var c = (ulong)Bits.Choose((SByte)a, (SByte)b, (SByte)s); ulong m = 0; for (int j = 0; j < 8; j++) { var mask = 1ul << j; if ((s & mask) == 0) { m |= (a & mask); } else { m |= (b & mask); } } Assert.AreEqual((SByte)c, (SByte)m); } }
public void ChooseInt16Test() { var g = new Generator("ChooseInt16Test"); for (int i = 0; i < 100; i++) { var a = (ulong)g.Int16(); var b = (ulong)g.Int16(); var s = (ulong)g.Int16(); var c = (ulong)Bits.Choose((Int16)a, (Int16)b, (Int16)s); ulong m = 0; for (int j = 0; j < 16; j++) { var mask = 1ul << j; if ((s & mask) == 0) { m |= (a & mask); } else { m |= (b & mask); } } Assert.AreEqual((Int16)c, (Int16)m); } }
public void ChooseUInt64Test() { var g = new Generator("ChooseUInt64Test"); for (int i = 0; i < 100; i++) { var a = (ulong)g.UInt64(); var b = (ulong)g.UInt64(); var s = (ulong)g.UInt64(); var c = (ulong)Bits.Choose((UInt64)a, (UInt64)b, (UInt64)s); ulong m = 0; for (int j = 0; j < 64; j++) { var mask = 1ul << j; if ((s & mask) == 0) { m |= (a & mask); } else { m |= (b & mask); } } Assert.AreEqual((UInt64)c, (UInt64)m); } }