public void CeilingToPowerOfHandlesPositiveIntegersCorrectly64() { Assert.AreEqual(0, ((long)0).CeilingToPowerOfTwo(), "0"); Assert.AreEqual(1, ((long)1).CeilingToPowerOfTwo(), "1"); Assert.AreEqual(2, ((long)2).CeilingToPowerOfTwo(), "2"); Assert.AreEqual(4, ((long)3).CeilingToPowerOfTwo(), "3"); Assert.AreEqual(4, ((long)4).CeilingToPowerOfTwo(), "4"); for (var i = 2; i < 63; i++) { var x = ((long)1) << i; Assert.AreEqual(x, x.CeilingToPowerOfTwo(), x.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(x, (x - 1).CeilingToPowerOfTwo(), x + "-1"); Assert.AreEqual(x, ((x >> 1) + 1).CeilingToPowerOfTwo(), x + "/2+1"); Assert.AreEqual(0, (-x).CeilingToPowerOfTwo(), "-" + x); } const long MaxPowerOfTwo = 0x4000000000000000; Assert.AreEqual(MaxPowerOfTwo, MaxPowerOfTwo.CeilingToPowerOfTwo(), "max"); Assert.AreEqual(MaxPowerOfTwo, (MaxPowerOfTwo - 1).CeilingToPowerOfTwo(), "max"); }
public void CeilingToPowerOfHandlesPositiveIntegersCorrectly32() { Assert.AreEqual(0, 0.CeilingToPowerOfTwo(), "0"); Assert.AreEqual(1, 1.CeilingToPowerOfTwo(), "1"); Assert.AreEqual(2, 2.CeilingToPowerOfTwo(), "2"); Assert.AreEqual(4, 3.CeilingToPowerOfTwo(), "3"); Assert.AreEqual(4, 4.CeilingToPowerOfTwo(), "4"); for (var i = 2; i < 31; i++) { var x = 1 << i; Assert.AreEqual(x, x.CeilingToPowerOfTwo(), x.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(x, (x - 1).CeilingToPowerOfTwo(), x + "-1"); Assert.AreEqual(x, ((x >> 1) + 1).CeilingToPowerOfTwo(), x + "/2+1"); Assert.AreEqual(0, (-x).CeilingToPowerOfTwo(), "-" + x); } const int MaxPowerOfTwo = 0x40000000; Assert.AreEqual(MaxPowerOfTwo, MaxPowerOfTwo.CeilingToPowerOfTwo(), "max"); Assert.AreEqual(MaxPowerOfTwo, (MaxPowerOfTwo - 1).CeilingToPowerOfTwo(), "max"); }