Beispiel #1
0
        public void Bitset_TestObj()
        {
            Bitset8 bb = new Bitset8();

            Assert.IsTrue(bb.Value == 0);
            Assert.AreEqual(false, bb.GetBit(0));
            Assert.AreEqual(false, bb.GetBit(7));

            //index out of range
            Assert.AreEqual(false, bb.GetBit(8));
            Assert.AreEqual(false, bb.GetBit(255));

            bb.ClearBit(1);
            Assert.AreEqual(false, bb.GetBit(1));

            bb.SetBit(2);
            Assert.AreEqual(4, bb.Value); // 0100
            Assert.AreEqual(true, bb.GetBit(2));
            bb.SetBit(3);
            Assert.IsTrue(bb.Value == 12); // 1100
            Assert.AreEqual(true, bb.GetBit(2));
            Assert.AreEqual(true, bb.GetBit(3));

            bb.ClearBit(2);
            bb.ClearBit(3);
            Assert.IsTrue(bb.Value == 0);
            Assert.AreEqual(false, bb.GetBit(2));
            Assert.AreEqual(false, bb.GetBit(3));
        }
Beispiel #2
0
        public void TestBitset8()
        {
            Bitset8 a = default;
            Bitset8 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[7]);
            Assert.AreEqual(c, c);
            Assert.AreNotEqual(c, a);

            c = ~c;
            Assert.True(c.None());
        }
Beispiel #3
0
        public void Bitset_Test8()
        {
            //位 7654 3210
            //值 1001 1010
            byte value = 154; // 154 1001 1010

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

            //set
            Bitset8.SetBit(ref value, 5);// 186 1011 1010
            Assert.IsTrue(value == 186);
            Assert.AreEqual(true, Bitset8.GetBit(value, 5));

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

            value = 154;                      // 154 1001 1010
            Bitset8.ReverseBit(ref value, 5); // 186 1011 1010
            Assert.IsTrue(value == 186);
            Assert.AreEqual(true, Bitset8.GetBit(value, 5));

            Bitset8.ReverseBit(ref value, 5);// 154 1001 1010
            Assert.IsTrue(value == 154);
            Assert.AreEqual(false, Bitset8.GetBit(value, 5));


            //obj
            Bitset8 bb = new Bitset8(154);

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

            //set
            bb.SetBit(5);// 186 1011 1010
            Assert.IsTrue(bb.Value == 186);
            Assert.AreEqual(true, bb.GetBit(5));

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

            value = 154;      // 154 1001 1010
            bb.ReverseBit(5); // 186 1011 1010
            Assert.IsTrue(bb.Value == 186);
            Assert.AreEqual(true, bb.GetBit(5));

            bb.ReverseBit(5);// 154 1001 1010
            Assert.IsTrue(bb.Value == 154);
            Assert.AreEqual(false, bb.GetBit(5));
        }