Beispiel #1
0
        public void LargeBitfield()
        {
            var bf = new MutableBitField(1000);

            bf.SetAll(true);
            Assert.AreEqual(1000, bf.TrueCount);
        }
Beispiel #2
0
        public void FirstTrue_2()
        {
            var b = new MutableBitField(1025);

            b[1024] = true;
            Assert.AreEqual(1024, b.FirstTrue(0, b.Length - 1));
        }
Beispiel #3
0
 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);
 }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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()));
        }
Beispiel #6
0
        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");
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
        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));
        }
Beispiel #9
0
        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");
        }