コード例 #1
0
        public void NearestBelowTest()
        {
            Assert.Equal(0UL, ZCurve.NearestBelow(0, 0));
            Assert.Equal(0UL, ZCurve.NearestBelow(0, 1));
            Assert.Equal(1UL, ZCurve.NearestBelow(0, 2));
            Assert.Equal(2UL, ZCurve.NearestBelow(0, 3));
            Assert.Equal(0x2AAAAAAAUL, ZCurve.NearestBelow(0, 31));
            Assert.Equal(0x2AAAAAAAAAAAAAAAUL, ZCurve.NearestBelow(0, 63));

            // 55 = Z(7,5) // 0111b 0101b => 0011 0111b
            Assert.Equal(54UL, ZCurve.NearestBelow(55, 0));
            Assert.Equal(53UL, ZCurve.NearestBelow(55, 1));
            Assert.Equal(51UL, ZCurve.NearestBelow(55, 2));
            Assert.Equal(55UL, ZCurve.NearestBelow(55, 3));
            Assert.Equal(39UL, ZCurve.NearestBelow(55, 4));
            Assert.Equal(31UL, ZCurve.NearestBelow(55, 5));
            Assert.Equal(55UL, ZCurve.NearestBelow(55, 6));
            Assert.Equal(63UL, ZCurve.NearestBelow(55, 7));
            Assert.Equal(ZCurve.Encode(7, 0x7FFF), ZCurve.NearestBelow(55, 31));
            Assert.Equal(ZCurve.Encode(7, int.MaxValue), ZCurve.NearestBelow(55, 63));

            // TODO More
        }