Пример #1
0
        public static async Task Test_Buffered_Peeking_Can_Peek_Counted_Bytes_Async()
        {
            //arrange
            DefaultStreamReaderStrategyAsync reader = new DefaultStreamReaderStrategyAsync(new byte[] { 5, 6, 7, 5 });

            //act
            IWireStreamReaderStrategyAsync peekedBufferReader = reader.PeekWithBufferingAsync();

            byte[] peekedBytes = await peekedBufferReader.PeekBytesAsync(4);

            byte[] peekedBytesAgain = await peekedBufferReader.PeekBytesAsync(2);

            byte[] readBytes = await peekedBufferReader.ReadBytesAsync(4);


            //assert
            Assert.AreEqual(4, readBytes.Length);
            for (int i = 0; i < peekedBytes.Length; i++)
            {
                Assert.AreEqual(peekedBytes[i], readBytes[i]);
            }

            for (int i = 0; i < peekedBytesAgain.Length; i++)
            {
                Assert.AreEqual(peekedBytes[i], peekedBytesAgain[i]);
            }

            Assert.Throws <InvalidOperationException>(() => peekedBufferReader.ReadByte());
        }
Пример #2
0
        public static async Task Test_Buffered_Peeking_Can_Peek_Bytes_Async()
        {
            //arrange
            DefaultStreamReaderStrategyAsync reader = new DefaultStreamReaderStrategyAsync(new byte[] { 5, 6, 7, 5 });

            //act
            IWireStreamReaderStrategyAsync peekedBufferReader = reader.PeekWithBufferingAsync();

            //assert
            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(5, await peekedBufferReader.PeekByteAsync());
            }

            Assert.AreEqual(5, await peekedBufferReader.ReadByteAsync());
            Assert.AreEqual(6, await peekedBufferReader.ReadByteAsync());

            byte[] readBytes = await peekedBufferReader.ReadAllBytesAsync();

            Assert.AreEqual(7, readBytes[0]);
            Assert.AreEqual(5, readBytes[1]);

            Assert.Throws <AggregateException>(() =>
            {
                byte b = peekedBufferReader.ReadByteAsync().Result;
            });
        }
Пример #3
0
        public static async Task Test_That_Prepended_Reader_Contains_Bytes_Async(byte[] bytes)
        {
            //arrange
            DefaultStreamReaderStrategyAsync reader = new DefaultStreamReaderStrategyAsync(new byte[0]);

            //act
            IWireStreamReaderStrategyAsync bufferedReader = reader.PreprendWithBytesAsync(bytes);

            //assert
            for (int i = 0; i < bytes.Length; i++)
            {
                Assert.AreEqual(await bufferedReader.ReadByteAsync(), bytes[i]);
            }
        }
Пример #4
0
        public static async Task Test_Buffered_Peeking_Can_Peek_Byte_Async(byte b)
        {
            //arrange
            DefaultStreamReaderStrategyAsync reader = new DefaultStreamReaderStrategyAsync(new byte[] { b });

            //act
            IWireStreamReaderStrategyAsync peekedBufferReader = reader.PeekWithBufferingAsync();

            //assert
            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(b, await peekedBufferReader.PeekByteAsync());
            }

            Assert.AreEqual(b, await peekedBufferReader.ReadByteAsync());

            Assert.Throws <AggregateException>(() =>
            {
                byte sdsdf = peekedBufferReader.ReadByteAsync().Result;
            });
        }
Пример #5
0
        public static void Test_That_Prepended_Reader_Contains_Bytes_After_The_Prended_Portion(byte[] bytes)
        {
            //arrange
            DefaultStreamReaderStrategyAsync reader = new DefaultStreamReaderStrategyAsync(new byte[] { 5, 7 });

            //act
            IWireStreamReaderStrategyAsync bufferedReader = reader.PreprendWithBytesAsync(bytes);

            byte[] readBytes = bufferedReader.ReadBytes(bytes.Length);

            //assert
            for (int i = 0; i < bytes.Length; i++)
            {
                Assert.AreEqual(readBytes[i], bytes[i]);
            }

            Assert.AreEqual(5, bufferedReader.ReadByte());
            Assert.AreEqual(7, bufferedReader.ReadByte());

            Assert.Throws <InvalidOperationException>(() => bufferedReader.ReadByte());
        }
Пример #6
0
        //TODO: Does this work for 0 length blocks?
        private async Task <Dictionary <uint, string> > ReadDBCStringBlock(DBCHeader header)
        {
            Dictionary <uint, string> stringMap = new Dictionary <uint, string>(1000);

            DBCStream.Position = header.StartStringPosition;
            byte[] bytes = new byte[DBCStream.Length - DBCStream.Position];

            await ReadBytesIntoArrayFromStream(bytes);

            DefaultStreamReaderStrategyAsync stringReader = new DefaultStreamReaderStrategyAsync(bytes);

            for (int currentOffset = 0; currentOffset < bytes.Length;)
            {
                string readString = (await Serializer.DeserializeAsync <StringDBC>(stringReader)).StringValue;

                stringMap.Add((uint)currentOffset, readString);

                //We must move the offset forward length + null terminator
                currentOffset += readString.Length + 1;
            }

            return(stringMap);
        }
Пример #7
0
        public static async Task Test_That_Prepended_Reader_Contains_Bytes_After_The_Prended_Portion_Async(byte[] bytes)
        {
            //arrange
            DefaultStreamReaderStrategyAsync reader = new DefaultStreamReaderStrategyAsync(new byte[] { 5, 7 });

            //act
            IWireStreamReaderStrategyAsync bufferedReader = reader.PreprendWithBytesAsync(bytes);

            byte[] readBytes = await bufferedReader.ReadBytesAsync(bytes.Length);

            //assert
            for (int i = 0; i < bytes.Length; i++)
            {
                Assert.AreEqual(readBytes[i], bytes[i]);
            }

            Assert.AreEqual(5, await bufferedReader.ReadByteAsync());
            Assert.AreEqual(7, await bufferedReader.ReadByteAsync());

            Assert.Throws <AggregateException>(() =>
            {
                byte b = bufferedReader.ReadByteAsync().Result;
            });
        }