Ejemplo n.º 1
0
        public void TestPutGetBitBuffer()
        {
            var b = new BitBuffer(new byte[1024]);
            var r = new Random(0);

            for (int i = 0; i < b.data.Length / 4; i++)
            {
                b.Put(r.Next());
            }

            for (int i = 0; i < 16; i++)
            {
                for (int length = 0; length < 32; length++)
                {
                    for (int offset = 0; offset < 16; offset++)
                    {
                        var c = new BitBuffer(new byte[(int)Math.Ceiling((offset + length) / 8f)], offset);
                        c.Put(b.GetBitsAt(i, length));
                        c = c.FromStartToPosition();
                        CollectionAssert.AreEqual(b.GetBitsAt(i, length).ToArray(), c.ToArray(), "i=" + i + ", length=" + length + ", offset=" + offset);
                        Assert.IsTrue(b.GetBitsAt(i, length).BufferEquals(c), "i=" + i + ", length=" + length + ", offset=" + offset);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void TestGetBytes()
        {
            for (int i = 0; i < 20; i++)
            {
                BitBuffer b = new BitBuffer(new byte[256], i);
                Random    r = new Random(0);
                for (int j = 0; j < 15; j++)
                {
                    int expected = r.Next();
                    b.Put(expected);
                    Assert.AreEqual(expected, b.GetIntAt(32 * j));
                }

                for (int k = 0; k < 20; k++)
                {
                    byte[] clon = new byte[256];
                    b.GetBitsAt(0, clon, k, 700);
                    BitBuffer b2 = new BitBuffer(clon);

                    r = new Random(0);
                    for (int j = 0; j < 15; j++)
                    {
                        uint expected = ((uint)r.Next()) << k;
                        uint read     = b2.GetUInt(32) & (~0u << k);
                        Assert.AreEqual(expected, read, "offset source=" + i + ", ofset destination=" + k + ", number=" + j);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void TestBufferInequality()
        {
            var b = new BitBuffer(new byte[1024]);
            var r = new Random(0);

            for (int i = 0; i < b.data.Length / 4; i++)
            {
                b.Put(r.Next());
            }

            for (int offset = 0; offset < 16; offset++)
            {
                for (int i = 0; i < 16; i++)
                {
                    for (int length = 0; length < 16; length++)
                    {
                        var c = new BitBuffer(new byte[(int)Math.Ceiling((offset + length) / 8f)], offset);
                        for (int p = 0; p < length; p++)
                        {
                            var b2 = c;
                            try {
                                var tmp = b.GetBitsAt(i, length);
                                b2.Put(tmp);
                                b2 = b2.FromStartToPosition();
                                b2.PutAt(p, !b2.GetBoolAt(p));

                                CollectionAssert.AreNotEqual(b.GetBitsAt(i, length).ToArray(), b2.ToArray());
                                Assert.IsFalse(b.GetBitsAt(i, length).BufferEquals(b2));
                            }
                            catch (Exception e) {
                                throw new Exception("i=" + i + ", length=" + length + ", p=" + p + ", offset=" + offset, e);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public void TestBitBufferPut2()
        {
            BitBuffer b = new BitBuffer(new byte[1200]);

            b.Position = 132;

            BitBuffer bToPut = new BitBuffer(new byte[1200]);

            bToPut.Put((byte)0);
            bToPut.Put((byte)1);
            bToPut.Put((byte)0);
            bToPut.Length = bToPut.absPosition;

            CollectionAssert.AreEqual(new byte[3] {
                0, 1, 0
            }, bToPut.ToArray());

            b.PutAt(132, bToPut);

            CollectionAssert.AreEqual(new byte[3] {
                0, 1, 0
            }, b.GetBitsAt(132, 24).ToArray());
        }