示例#1
0
        public void TestBitset16()
        {
            Bitset16 a = default;
            Bitset16 b = default;

            a.Set(0);
            b.Set(1);
            Assert.AreEqual(1, a.ToUInt64());
            Assert.AreEqual(2, b.ToUInt32());
            Assert.AreEqual(3, (a | b).ToUInt64());
            Assert.AreEqual(3, (a ^ b).ToUInt64());
            Assert.AreEqual(0, (a & b).ToUInt64());

            var c = ~a;

            Assert.False(c[0]);
            Assert.True(c.Any());

            c |= a;
            Assert.True(c.All());
            Assert.True(c[15]);
            Assert.AreEqual(c, c);
            Assert.AreNotEqual(c, a);

            c = ~c;
            Assert.True(c.None());
        }
示例#2
0
        public void Bitset_Test16()
        {
            //位 7654 3210
            //值 1001 1010
            ushort value = 32922; // 32922 ‭‭1000000010011010‬‬

            Assert.AreEqual(false, Bitset16.GetBit(value, 0));
            Assert.AreEqual(true, Bitset16.GetBit(value, 1));
            Assert.AreEqual(true, Bitset16.GetBit(value, 4));
            Assert.AreEqual(true, Bitset16.GetBit(value, 7));
            Assert.AreEqual(true, Bitset16.GetBit(value, 15));
            //index out of range
            Assert.AreEqual(false, Bitset16.GetBit(value, 16));
            Assert.AreEqual(false, Bitset16.GetBit(value, 255));

            //set
            Bitset16.SetBit(ref value, 5);// 32954 ‭‭1000000010111010‬‬
            Assert.IsTrue(value == 32954);
            Assert.AreEqual(true, Bitset16.GetBit(value, 5));

            //clear
            Bitset16.ClearBit(ref value, 5);
            Assert.IsTrue(value == 32922);
            Assert.AreEqual(false, Bitset16.GetBit(value, 5));


            //obj
            Bitset16 bb = new Bitset16(32922);

            Assert.AreEqual(false, bb.GetBit(0));
            Assert.AreEqual(true, bb.GetBit(1));
            Assert.AreEqual(true, bb.GetBit(4));
            Assert.AreEqual(true, bb.GetBit(7));
            Assert.AreEqual(true, bb.GetBit(15));
            //index out of range
            Assert.AreEqual(false, bb.GetBit(16));
            Assert.AreEqual(false, bb.GetBit(255));

            //set
            bb.SetBit(5);// 32954 ‭‭1000000010111010‬‬
            Assert.IsTrue(bb.Value == 32954);
            Assert.AreEqual(true, bb.GetBit(5));

            //clear
            bb.ClearBit(5);
            Assert.IsTrue(bb.Value == 32922);
            Assert.AreEqual(false, bb.GetBit(5));
        }