예제 #1
0
        public void IsPowerOfTwo()
        {
            //int
            Assert.IsFalse(Fast.IsPowerOfTwo(0));
            Assert.IsTrue(Fast.IsPowerOfTwo(1));
            Assert.IsTrue(Fast.IsPowerOfTwo(2));
            Assert.IsFalse(Fast.IsPowerOfTwo(6));
            Assert.IsTrue(Fast.IsPowerOfTwo(8));
            Assert.IsFalse(Fast.IsPowerOfTwo(int.MaxValue - 1));
            Assert.IsFalse(Fast.IsPowerOfTwo(int.MaxValue));
            Assert.IsFalse(Fast.IsPowerOfTwo(int.MinValue + 1));
            Assert.IsFalse(Fast.IsPowerOfTwo(int.MinValue));
            //long
            Assert.IsFalse(Fast.IsPowerOfTwo(0L));
            Assert.IsTrue(Fast.IsPowerOfTwo(1L));
            Assert.IsTrue(Fast.IsPowerOfTwo(2L));
            Assert.IsFalse(Fast.IsPowerOfTwo(6L));
            Assert.IsTrue(Fast.IsPowerOfTwo(8L));
            Assert.IsFalse(Fast.IsPowerOfTwo(long.MaxValue - 1L));
            Assert.IsFalse(Fast.IsPowerOfTwo(long.MaxValue));
            Assert.IsFalse(Fast.IsPowerOfTwo(long.MinValue + 1L));
            Assert.IsFalse(Fast.IsPowerOfTwo(long.MinValue));
            //byte
            Assert.IsFalse(Fast.IsPowerOfTwo((byte)0));
            Assert.IsTrue(Fast.IsPowerOfTwo((byte)1));
            Assert.IsTrue(Fast.IsPowerOfTwo((byte)2));
            Assert.IsFalse(Fast.IsPowerOfTwo((byte)6));
            Assert.IsTrue(Fast.IsPowerOfTwo((byte)8));
            Assert.IsFalse(Fast.IsPowerOfTwo((byte)(byte.MaxValue - 1)));
            Assert.IsFalse(Fast.IsPowerOfTwo(byte.MaxValue));
            //sbyte
            Assert.IsFalse(Fast.IsPowerOfTwo((sbyte)0));
            Assert.IsTrue(Fast.IsPowerOfTwo((sbyte)1));
            Assert.IsTrue(Fast.IsPowerOfTwo((sbyte)2));
            Assert.IsFalse(Fast.IsPowerOfTwo((sbyte)6));
            Assert.IsTrue(Fast.IsPowerOfTwo((sbyte)8));
            Assert.IsFalse(Fast.IsPowerOfTwo((sbyte)(sbyte.MaxValue - 1)));
            Assert.IsFalse(Fast.IsPowerOfTwo(sbyte.MaxValue));
            //uint
            Assert.IsFalse(Fast.IsPowerOfTwo(0u));
            Assert.IsTrue(Fast.IsPowerOfTwo(1u));
            Assert.IsTrue(Fast.IsPowerOfTwo(2u));
            Assert.IsFalse(Fast.IsPowerOfTwo(6u));
            Assert.IsTrue(Fast.IsPowerOfTwo(8u));
            Assert.IsFalse(Fast.IsPowerOfTwo(uint.MaxValue - 1u));
            Assert.IsFalse(Fast.IsPowerOfTwo(uint.MaxValue));
            //ulong
            Assert.IsFalse(Fast.IsPowerOfTwo(0UL));
            Assert.IsTrue(Fast.IsPowerOfTwo(1UL));
            Assert.IsTrue(Fast.IsPowerOfTwo(2UL));
            Assert.IsFalse(Fast.IsPowerOfTwo(6UL));
            Assert.IsTrue(Fast.IsPowerOfTwo(8UL));
            Assert.IsFalse(Fast.IsPowerOfTwo(ulong.MaxValue - 1UL));
            Assert.IsFalse(Fast.IsPowerOfTwo(ulong.MaxValue));

            //ushort
            Assert.IsFalse(Fast.IsPowerOfTwo((ushort)0));
            Assert.IsTrue(Fast.IsPowerOfTwo((ushort)1));
            Assert.IsTrue(Fast.IsPowerOfTwo((ushort)2));
            Assert.IsFalse(Fast.IsPowerOfTwo((ushort)6));
            Assert.IsTrue(Fast.IsPowerOfTwo((ushort)8));
            Assert.IsFalse(Fast.IsPowerOfTwo((ushort)(ushort.MaxValue - 1)));
            Assert.IsFalse(Fast.IsPowerOfTwo(ushort.MaxValue));

            //short
            Assert.IsFalse(Fast.IsPowerOfTwo((short)0));
            Assert.IsTrue(Fast.IsPowerOfTwo((short)1));
            Assert.IsTrue(Fast.IsPowerOfTwo((short)2));
            Assert.IsFalse(Fast.IsPowerOfTwo((short)6));
            Assert.IsTrue(Fast.IsPowerOfTwo((short)8));
            Assert.IsFalse(Fast.IsPowerOfTwo((short)(short.MaxValue - 1)));
            Assert.IsFalse(Fast.IsPowerOfTwo(short.MaxValue));
            Assert.IsFalse(Fast.IsPowerOfTwo((short)(short.MinValue + 1)));
            Assert.IsFalse(Fast.IsPowerOfTwo(short.MinValue));
        }