示例#1
0
 private static Table GetMockedBasicSampleTable()
 {
     return(Substitute.ForPartsOf <MockableTable>(
                new Header(DateTime.Now, 0, 0, new List <IColumn> {
         new BooleanColumn("LOGICAL", 0, 1)
     }),
                Samples.GetBasicTableStream()));
 }
        private async Task Action_CancellationToken_ReadsAllBytesUsingTheToken(Func <Stream, CancellationToken, Task> action)
        {
            var cts       = new CancellationTokenSource();
            var streamSpy = Spy.OnStream(Samples.GetBasicTableStream());

            await action(streamSpy, cts.Token);

            await streamSpy.DidNotReceive().ReadAsync(Arg.Any <byte[]>(), Arg.Any <int>(), Arg.Any <int>(), Arg.Is <CancellationToken>(t => t != cts.Token));
        }
示例#3
0
        public void Open_CustomHeaderLoader_LoadsHeaderWithTheLoader()
        {
            // Arrange
            var headerLoader = Substitute.ForPartsOf <HeaderLoader>();

            // Act
            using (var table = Table.Open(Samples.GetBasicTableStream(), headerLoader)) { }

            // Assert
            headerLoader.Received().Load(Arg.Any <Stream>());
        }
示例#4
0
        public async Task Dispose_LoadedFromStream_DisposesTheStream(bool useAsync)
        {
            // Arrange
            var streamSpy = Spy.OnStream(Samples.GetBasicTableStream());
            var table     = await this.Exec(() => Table.Open(streamSpy), useAsync);

            // Act
            table.Dispose();

            // Assert
            streamSpy.Received().Dispose();
        }
示例#5
0
        public async Task Dispose_DisposedInstance_DoesNotDisposeTheBaseStream(bool useAsync)
        {
            // Arrange
            var streamSpy = Spy.OnStream(Samples.GetBasicTableStream());
            var table     = await this.Exec(() => Table.Open(streamSpy), useAsync);

            // Act
            table.Dispose();
            table.Dispose();

            // Assert
            streamSpy.Received(requiredNumberOfCalls: 1).Dispose();
        }
示例#6
0
        public async Task OpenAsync_CustomHeaderLoader_LoadsHeaderWithTheLoader()
        {
            // Arrange
            var headerLoader = Substitute.ForPartsOf <HeaderLoader>();

            // Act
            using (var table = await Table.OpenAsync(Samples.GetBasicTableStream(), headerLoader)) { }

#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
            // Assert
            headerLoader.Received().LoadAsync(Arg.Any <Stream>());
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
        }
示例#7
0
        public async Task StreamWithPartialReads_ReadsTheTableProperly(bool useAsync)
        {
            using (var tableStream = Samples.GetBasicTableStream().EmulatePartialReads())
                using (var table = await this.Exec(() => Table.Open(tableStream), useAsync))
                {
                    var reader = table.OpenReader();

                    var actualTableContent = new Dictionary <string, List <object> >();
                    foreach (var column in table.Columns)
                    {
                        actualTableContent.Add(column.Name, new List <object>());
                    }

                    while (await reader.Exec(r => r.Read(), useAsync))
                    {
                        foreach (var column in table.Columns)
                        {
                            actualTableContent[column.Name].Add(reader.GetValue(column));
                        }
                    }

                    actualTableContent.ShouldAllBeEquivalentTo(Samples.BasicTableContent);
                }
        }