示例#1
0
        public void Ext_ULongN_Get_Exc_LessThan2Bits_Loopback()
        {
            BVector d = new BVector();

            d.Add((ulong?)0, 32);
            d.GetULongN(1);
        }
示例#2
0
        public void Ext_ULongN_Get_Exc_MoreThan32Bits_Loopback()
        {
            BVector d = new BVector();

            d.Add((ulong?)0, 32);
            d.GetULongN(65);
        }
示例#3
0
        public void Ext_ULongN_AddGet_BitsMinMax_InOut()
        {
            int         maxBits = 64;
            BVector     d       = new BVector();
            ulong?      value;
            ulong?      val;
            ulong?      expected;
            ulong?      nullVal = (ulong?)null;
            const ulong maxVal  = ulong.MaxValue;
            byte        bits;


            // add min and max values for 2-32 bits
            for (int i = 0; i < (maxBits - 1); i++)
            {
                bits  = (byte)(maxBits - i);
                value = maxVal >> i;
                // add max
                d.Add(value, bits);

                // add null
                d.Add(nullVal, bits);
            }

            // add min and max values for 2-32 bits seperated by 1 bit
            d.Add1(false);
            for (int i = 0; i < (maxBits - 1); i++)
            {
                bits  = (byte)(maxBits - i);
                value = maxVal >> i;
                // add max
                d.Add(value, bits);
                d.Add1(false);

                // add null
                d.Add(nullVal, bits);
                d.Add1(false);
            }

            BVector d2 = new BVector(d.ToBytes());

            // get min and max values for 2-32 bits
            for (int i = 0; i < (maxBits - 1); i++)
            {
                bits = (byte)(maxBits - i);

                // get max
                expected = maxVal >> i;
                val      = d2.GetULongN(bits);
                Assert.AreEqual(expected, val);

                // get null
                expected = nullVal;
                val      = d2.GetULongN(bits);
                Assert.AreEqual(expected, val);
            }

            // get min and max values for 2-32 bits seperated by 1 bit
            Assert.AreEqual(false, d2.Get1());
            for (int i = 0; i < (maxBits - 1); i++)
            {
                bits = (byte)(maxBits - i);

                // get max
                expected = maxVal >> i;
                val      = d2.GetULongN(bits);
                Assert.AreEqual(expected, val);
                Assert.AreEqual(false, d2.Get1());

                // get null
                expected = nullVal;
                val      = d2.GetULongN(bits);
                Assert.AreEqual(expected, val);
                Assert.AreEqual(false, d2.Get1());
            }
        }