Exemplo n.º 1
0
        public void TestBitset32()
        {
            Bitset32 a = default;
            Bitset32 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[31]);
            Assert.AreEqual(c, c);
            Assert.AreNotEqual(c, a);

            c = ~c;
            Assert.True(c.None());
        }
Exemplo n.º 2
0
        public void Bitset_Test32()
        {
            //位 7654 3210
            //值 1001 1010
            uint value = 2147483802; // 2147483802 ‭10000000000000000000000010011010‬

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

            //set
            Bitset32.SetBit(ref value, 5);// 2147483834 ‭10000000000000000000000010111010‬
            Assert.IsTrue(value == 2147483834);
            Assert.AreEqual(true, Bitset32.GetBit(value, 5));

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


            //obj
            Bitset32 bb = new Bitset32(2147483802);

            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(31));
            //index out of range
            Assert.AreEqual(false, bb.GetBit(32));
            //Assert.AreEqual(false, bb.GetBit(255));

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

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