Exemplo n.º 1
0
        public unsafe void SevenBitEncoded()
        {
            byte[] data;

            List <KeyValuePair <ulong, int> > pairs = new List <KeyValuePair <ulong, int> >();

            pairs.Add(new KeyValuePair <ulong, int>(0L, 1));

            for (int d = 1; d < 10; d++)
            {
                pairs.Add(new KeyValuePair <ulong, int>((1UL << (d * 7)) - 1, d));
                pairs.Add(new KeyValuePair <ulong, int>(1UL << (d * 7), d + 1));
            }

            pairs.Add(new KeyValuePair <ulong, int>(ulong.MaxValue, 10));

            ManagedBinaryMemoryWriter writer = new ManagedBinaryMemoryWriter();

            for (int c = 0; c < 40; c++)
            {
                foreach (KeyValuePair <ulong, int> pair in pairs)
                {
                    writer.Write7BitEncoded(pair.Key);
                }
            }

            data = writer.ToArray();

            fixed(byte *pData = data)
            {
                BinaryMemoryReader reader = new BinaryMemoryReader(pData, data.Length);

                for (int c = 0; c < 40; c++)
                {
                    foreach (KeyValuePair <ulong, int> pair in pairs)
                    {
                        Assert.AreEqual(pair.Key, reader.Read7BitEncoded(), $"Didn't read what i've wrote with {pair.Key}, turn {c}.");
                    }
                }
            }
        }