コード例 #1
0
        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");
        }
コード例 #2
0
        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");
        }