public void LargeBitfield() { var bf = new MutableBitField(1000); bf.SetAll(true); Assert.AreEqual(1000, bf.TrueCount); }
public void FirstTrue_2() { var b = new MutableBitField(1025); b[1024] = true; Assert.AreEqual(1024, b.FirstTrue(0, b.Length - 1)); }
public void SetUp() { // The bool[] must be kept in sync with the byte[] constructor. They represent exactly the same thing. initalValues = new[] { true, false, true, false, true, false, true, true, true, false, false, true }; secondValues = new[] { true, true, false, false, true, false, true, false, true, false, false, true }; initialByteValues = new byte[] { 171, 144 }; bf = new MutableBitField(initalValues); }
public void Equals_False() { var bf = new MutableBitField(10).SetAll(true); var other = new MutableBitField(bf).Set(5, false); Assert.IsFalse(bf.Equals(other)); Assert.IsFalse(bf.Equals(null)); Assert.IsFalse(bf.Equals(new BitField(5))); bf.Set(6, false); Assert.AreEqual(bf.TrueCount, other.TrueCount); Assert.IsFalse(bf.Equals(other)); }
public void Not_ExtraBits() { var bf = new MutableBitField(25); Assert.AreEqual(0, bf.TrueCount); Assert.IsTrue(new byte[] { 0, 0, 0, 0 }.SequenceEqual(bf.ToByteArray())); bf.Not(); Assert.AreEqual(25, bf.TrueCount); Assert.IsTrue(new byte[] { byte.MaxValue, byte.MaxValue, byte.MaxValue, 1 << 7 }.SequenceEqual(bf.ToByteArray())); bf.Not(); Assert.AreEqual(0, bf.TrueCount); Assert.IsTrue(new byte[] { 0, 0, 0, 0 }.SequenceEqual(bf.ToByteArray())); }
public void From() { MutableBitField b = new MutableBitField(31); b.SetAll(true); Assert.AreEqual(31, b.TrueCount, "#1"); Assert.IsTrue(b.AllTrue, "#1b"); b = new MutableBitField(32); b.SetAll(true); Assert.AreEqual(32, b.TrueCount, "#2"); Assert.IsTrue(b.AllTrue, "#2b"); b = new MutableBitField(33); b.SetAll(true); Assert.AreEqual(33, b.TrueCount, "#3"); Assert.IsTrue(b.AllTrue, "#3b"); }
public void And2() { Random r = new Random(); byte[] a = new byte[100]; byte[] b = new byte[100]; r.NextBytes(a); r.NextBytes(b); for (int i = 1; i < a.Length * 8; i++) { var first = new MutableBitField(a, i); var second = new MutableBitField(b, i); first.And(second); } }
public void FirstTrue_3() { var b = new MutableBitField(65); b[0] = true; Assert.AreEqual(0, b.FirstTrue(0, 0)); Assert.AreEqual(0, b.FirstTrue(0, 1)); Assert.AreEqual(-1, b.FirstTrue(1, 1)); Assert.AreEqual(-1, b.FirstTrue(1, 2)); b[31] = true; Assert.AreEqual(31, b.FirstTrue(1, 31)); Assert.AreEqual(31, b.FirstTrue(1, 32)); b[31] = false; b[32] = true; Assert.AreEqual(32, b.FirstTrue(1, 32)); }
public void Xor() { MutableBitField bf2 = new MutableBitField(secondValues); bf.Xor(bf2); Assert.AreEqual(new BitField(secondValues), bf2, "#1: bf2 should be unmodified"); for (int i = 0; i < bf.Length; i++) { Assert.AreEqual((initalValues[i] || secondValues[i]) && !(initalValues[i] && secondValues[i]), bf[i], "#2"); } int count = 0; for (int i = 0; i < initalValues.Length; i++) { if ((initalValues[i] || secondValues[i]) && !(initalValues[i] && secondValues[i])) { count++; } } Assert.AreEqual(count, bf.TrueCount, "#3"); }