示例#1
0
            public void ShouldSerializeSuccessiveResultColumns()
            {
                // Arrange
                var dataSet = new DataSet();

                dataSet.Tables.Add(new DataTable());
                dataSet.Tables.Add(new DataTable());

                dataSet.Tables[0].Columns.Add("foo", typeof(int));
                dataSet.Tables[0].Rows.Add(1);

                var columnName = "bar";

                dataSet.Tables[1].Columns.Add(columnName, typeof(int));
                dataSet.Tables[1].Rows.Add(1);

                var dataReader = dataSet.CreateDataReader();

                var stream = new ProtoDataStream(dataReader);

                // Act
                var reader = ProtoReader.Create(this.CopyStream(stream), null, null);

                // Assert
                var readerContext = new ProtoReaderContext(reader);

                readerContext.ReadUntilResultEnd();
                readerContext.ReadUntilColumnName();

                Assert.Equal(columnName, reader.ReadString());
            }
示例#2
0
            public void ShouldSerializeMultipleResults()
            {
                // Arrange
                var dataSet = new DataSet();

                dataSet.Tables.Add(new DataTable());
                dataSet.Tables.Add(new DataTable());

                dataSet.Tables[0].Columns.Add("foo", typeof(int));
                dataSet.Tables[0].Rows.Add(1);

                dataSet.Tables[1].Columns.Add("bar", typeof(int));
                dataSet.Tables[1].Rows.Add(1);

                var dataReader = dataSet.CreateDataReader();

                var stream = new ProtoDataStream(dataReader);

                // Act
                var reader = ProtoReader.Create(this.CopyStream(stream), null, null);

                // Assert
                var readerContext = new ProtoReaderContext(reader);

                readerContext.ReadUntilResultEnd();

                Assert.Equal(ResultFieldHeader, reader.ReadFieldHeader());
            }
示例#3
0
            public When_reading_from_a_stream_containing_multiple_data_tables_with_big_buffer()
            {
                var testData = new DataSet
                {
                    Tables =
                    {
                        TestData.GenerateRandomDataTable(10,  50),
                        TestData.GenerateRandomDataTable(5,  100),
                        TestData.GenerateRandomDataTable(20, 10000)
                    }
                };

                using (var r = testData.CreateDataReader())
                    using (var memoryStream = new MemoryStream())
                    {
                        DataSerializer.Serialize(memoryStream, r);
                        this.expectedBytes = memoryStream.GetTrimmedBuffer();
                    }

                this.reader = testData.CreateDataReader();
                using (var stream = new ProtoDataStream(this.reader, 50 * 1024 * 1024)) // 50 Mb buffer which
                    using (var memoryStream = new MemoryStream())
                    {
                        stream.CopyTo(memoryStream);
                        this.actualBytes = memoryStream.GetTrimmedBuffer();
                    }
            }
示例#4
0
            public void SetUp()
            {
                var testData = new DataSet
                {
                    Tables =
                    {
                        TestData.GenerateRandomDataTable(10,  50),
                        TestData.GenerateRandomDataTable(5,  100),
                        TestData.GenerateRandomDataTable(20, 10000)
                    }
                };

                using (var r = testData.CreateDataReader())
                    using (var memoryStream = new MemoryStream())
                    {
                        DataSerializer.Serialize(memoryStream, r);
                        expectedBytes = memoryStream.GetTrimmedBuffer();
                    }

                reader = testData.CreateDataReader();
                using (var stream = new ProtoDataStream(reader))
                    using (var memoryStream = new MemoryStream())
                    {
                        stream.CopyTo(memoryStream);
                        actualBytes = memoryStream.GetTrimmedBuffer();
                    }
            }
示例#5
0
            public void ShouldThrowException()
            {
                // Arrange
                var stream = new ProtoDataStream(this.CreateDataReader("foo"));

                // Assert
                Assert.Throws <NotSupportedException>(() => stream.SetLength(0));
            }
示例#6
0
            public When_the_proto_stream_has_been_closed()
            {
                using (var table = TestData.SmallDataTable())
                    using (var tableReader = table.CreateDataReader())
                    {
                        this.protoStream = new ProtoDataStream(tableReader);
                    }

                this.protoStream.Close();
            }
示例#7
0
            public void ShouldReturnFalse()
            {
                // Arrange
                var stream = new ProtoDataStream(this.CreateDataReader("foo"));

                // Act
                var result = stream.CanWrite;

                // Assert
                Assert.False(result);
            }
            public void ShouldReturnTrueIfNotDisposed()
            {
                // Arrange
                var stream = new ProtoDataStream(this.CreateDataReader("foo"));

                // Act
                var result = stream.CanRead;

                // Assert
                Assert.True(result);
            }
示例#9
0
            public void ShouldDisposeReader()
            {
                // Arrange
                var reader = this.CreateDataReader("foo");
                var stream = new ProtoDataStream(reader);

                // Act
                stream.Read(new byte[1024], 0, 1024);

                // Assert
                Assert.Throws <InvalidOperationException>(() => reader.FieldCount);
            }
示例#10
0
            public void ShouldDisposeReader()
            {
                // Arrange
                var reader = this.CreateDataReader("foo");
                var stream = new ProtoDataStream(reader);

                // Act
                reader.Dispose();

                // Assert
                Assert.Throws <InvalidOperationException>(() => reader.Read());
            }
示例#11
0
            public void ShouldReturnZeroWhenReaderIsClosed()
            {
                // Arrange
                var stream = new ProtoDataStream(this.CreateDataReader("foo"));

                stream.Read(new byte[1024], 0, 1024);

                // Act
                var result = stream.Read(new byte[1024], 0, 1024);

                // Assert
                Assert.Equal(0, result);
            }
示例#12
0
            public void It_should_copy_with_various_buffers(int protoBufferSize, int copyBufferSize)
            {
                byte[] actualBytes;
                using (var reader = this.testData.CreateDataReader())
                    using (var stream = new ProtoDataStream(reader, protoBufferSize * 1024))
                        using (var memoryStream = new MemoryStream())
                        {
                            stream.CopyTo(memoryStream, copyBufferSize * 1024);
                            actualBytes = memoryStream.GetTrimmedBuffer();
                        }

                Assert.Equal(this.expectedBytes.LongLength, actualBytes.LongLength);
                Assert.Equal(this.expectedBytes, actualBytes);
            }
示例#13
0
            public void It_should_populate_the_buffer_correctly()
            {
                using (var reader = testData.CreateDataReader())
                    using (var stream = new ProtoDataStream(reader))
                    {
                        var buffer1 = new byte[16];
                        stream.Read(buffer1, 0, buffer1.Length).Should().Be(buffer1.Length);
                        buffer1.Should().Have.SameSequenceAs(expectedBytes.Take(buffer1.Length));

                        stream.Read(buffer1, 0, 0).Should().Be(0);

                        var buffer2 = new byte[16 * 1024];
                        stream.Read(buffer2, 0, buffer2.Length).Should().Be(buffer2.Length);
                        buffer2.Should().Have.SameSequenceAs(expectedBytes.Skip(buffer1.Length).Take(buffer2.Length));
                    }
            }
示例#14
0
            public When_the_proto_stream_has_been_disposed()
            {
                Stream stream;

                using (var table = TestData.SmallDataTable())
                    using (var tableReader = table.CreateDataReader())
                    {
                        stream = new ProtoDataStream(tableReader);
                    }

                Assert.True(stream.CanRead);

                this.weakRef = new WeakReference(stream);

                stream.Dispose();
            }
示例#15
0
            public void ShouldSerializeField()
            {
                // Arrange
                var value      = "foo";
                var dataReader = this.CreateDataReader(value);

                var stream = new ProtoDataStream(dataReader);

                // Act
                var reader = ProtoReader.Create(this.CopyStream(stream), null, null);

                // Assert
                var readerContext = new ProtoReaderContext(reader);

                readerContext.ReadUntilFieldValue();

                Assert.Equal(value, reader.ReadString());
            }
示例#16
0
            public When_reading_from_a_stream()
            {
                var testData = TestData.GenerateRandomDataTable(10, 10000);

                using (var r = testData.CreateDataReader())
                    using (var memoryStream = new MemoryStream())
                    {
                        DataSerializer.Serialize(memoryStream, r);
                        this.expectedBytes = memoryStream.GetTrimmedBuffer();
                    }

                this.reader = testData.CreateDataReader();
                using (var stream = new ProtoDataStream(this.reader))
                    using (var memoryStream = new MemoryStream())
                    {
                        stream.CopyTo(memoryStream);
                        this.actualBytes = memoryStream.GetTrimmedBuffer();
                    }
            }
示例#17
0
            public void SetUp()
            {
                var testData = TestData.SmallDataTable();

                using (var r = testData.CreateDataReader())
                    using (var memoryStream = new MemoryStream())
                    {
                        DataSerializer.Serialize(memoryStream, r);
                        expectedBytes = memoryStream.GetTrimmedBuffer();
                    }

                reader = testData.CreateDataReader();
                using (var stream = new ProtoDataStream(reader))
                    using (var memoryStream = new MemoryStream())
                    {
                        stream.CopyTo(memoryStream);
                        actualBytes = memoryStream.GetTrimmedBuffer();
                    }
            }
示例#18
0
            public When_reading_from_a_stream_less_than_protobuf_nets_flush_size()
            {
                var testData = TestData.SmallDataTable();

                using (var r = testData.CreateDataReader())
                    using (var memoryStream = new MemoryStream())
                    {
                        DataSerializer.Serialize(memoryStream, r);
                        this.expectedBytes = memoryStream.GetTrimmedBuffer();
                    }

                this.reader = testData.CreateDataReader();
                using (var stream = new ProtoDataStream(this.reader))
                    using (var memoryStream = new MemoryStream())
                    {
                        stream.CopyTo(memoryStream);
                        this.actualBytes = memoryStream.GetTrimmedBuffer();
                    }
            }
示例#19
0
            public void It_should_populate_the_buffer_correctly()
            {
                using (var reader = this.testData.CreateDataReader())
                    using (var stream = new ProtoDataStream(reader))
                    {
                        var buffer1       = new byte[16];
                        var buffer1Readed = stream.Read(buffer1, 0, buffer1.Length);
                        Assert.Equal(buffer1.Length, buffer1Readed);
                        Assert.Equal(this.expectedBytes.Take(buffer1.Length), buffer1);

                        buffer1Readed = stream.Read(buffer1, 0, 0);
                        Assert.Equal(0, buffer1Readed);

                        var buffer2       = new byte[16 * 1024];
                        var buffer2Readed = stream.Read(buffer2, 0, buffer2.Length);
                        Assert.Equal(buffer2.Length, buffer2Readed);
                        Assert.Equal(this.expectedBytes.Skip(buffer1.Length).Take(buffer2.Length), buffer2);
                    }
            }
示例#20
0
            public void ShouldSerializeUsingMultipleIterations()
            {
                // Arrange
                var stream       = new ProtoDataStream(this.CreateDataReader("foo", 1000));
                var outputStream = new MemoryStream();

                var buffer = new byte[1];
                int read;

                // Act
                while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    outputStream.Write(buffer, 0, read);
                }

                // Assert
                outputStream.Position = 0;

                var reader = ProtoReader.Create(outputStream, null, null);

                Assert.Equal(ResultFieldHeader, reader.ReadFieldHeader());
            }
示例#21
0
            public void ShouldSerializeColumns()
            {
                // Arrange
                var columnName = "foo";
                var dataTable  = new DataTable();

                dataTable.Columns.Add(columnName, typeof(int));

                dataTable.Rows.Add(1);

                var dataReader = dataTable.CreateDataReader();
                var stream     = new ProtoDataStream(dataReader);

                // Act
                var reader = ProtoReader.Create(this.CopyStream(stream), null, null);

                // Assert
                var readerContext = new ProtoReaderContext(reader);

                readerContext.ReadUntilColumnName();

                Assert.Equal(columnName, reader.ReadString());
            }
            public void SetUp()
            {
                var testData = TestData.GenerateRandomDataTable(10, 10000);

                using (var r = testData.CreateDataReader())
                using (var memoryStream = new MemoryStream())
                {
                    DataSerializer.Serialize(memoryStream, r);
                    expectedBytes = memoryStream.GetTrimmedBuffer();
                }

                reader = testData.CreateDataReader();
                using (var stream = new ProtoDataStream(reader))
                using (var memoryStream = new MemoryStream())
                {
                    stream.CopyTo(memoryStream);
                    actualBytes = memoryStream.GetTrimmedBuffer();
                }
            }
            public void It_should_populate_the_buffer_correctly()
            {
                using (var reader = testData.CreateDataReader())
                using (var stream = new ProtoDataStream(reader))
                {
                    var buffer1 = new byte[16];
                    stream.Read(buffer1, 0, buffer1.Length).Should().Be(buffer1.Length);
                    buffer1.Should().Have.SameSequenceAs(expectedBytes.Take(buffer1.Length));

                    stream.Read(buffer1, 0, 0).Should().Be(0);

                    var buffer2 = new byte[16 * 1024];
                    stream.Read(buffer2, 0, buffer2.Length).Should().Be(buffer2.Length);
                    buffer2.Should().Have.SameSequenceAs(expectedBytes.Skip(buffer1.Length).Take(buffer2.Length));
                }
            }