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