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)); }
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()); }
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)); }