예제 #1
0
            public async void ShouldWaitForAllRecordsToArrive()
            {
                var recordYielder     = new TestRecordYielder(5, 10, _output);
                var recordYielderEnum = recordYielder.Records.GetEnumerator();

                var stream = new Mock <IResultStream>();

                stream.Setup(x => x.NextRecordAsync()).Returns(() => NextRecordFromEnum(recordYielderEnum));
                stream.Setup(x => x.GetKeysAsync()).Returns(() => Task.FromResult(TestRecordYielder.Keys.ToArray()));

                int count  = 0;
                var cursor = new ResultCursor(stream.Object);
                var t      = Task.Factory.StartNew(async() =>
                {
                    // ReSharper disable once LoopCanBeConvertedToQuery
                    while (await cursor.FetchAsync())
                    {
                        count++;
                    }

                    count.Should().Be(10);
                });

                while (count < 5)
                {
                    Thread.Sleep(10);
                }

                recordYielder.AddNew(5);

                await t;
            }
예제 #2
0
        public async Task <IRecord> GetNextRecord()
        {
            if (await ResultCursor.FetchAsync())
            {
                return(await Task.FromResult <IRecord>(ResultCursor.Current));
            }

            return(await Task.FromResult <IRecord>(null));
        }
예제 #3
0
            public async Task ShouldSetKeysProperlyIfKeysNotNull()
            {
                var stream = new Mock <IResultStream>();

                stream.Setup(x => x.NextRecordAsync()).Returns(NextRecordFromEnum(new List <IRecord>().GetEnumerator()));
                stream.Setup(x => x.GetKeysAsync()).Returns(() => Task.FromResult(new[] { "test" }));

                var result =
                    new ResultCursor(stream.Object);
                var keys = await result.KeysAsync();

                keys.Should().HaveCount(1).And.Contain("test");
            }
예제 #4
0
            public async void ShouldReturnRecords()
            {
                var recordYielder     = new TestRecordYielder(5, 10, _output);
                var recordYielderEnum = recordYielder.RecordsWithAutoLoad.GetEnumerator();

                var stream = new Mock <IResultStream>();

                stream.Setup(x => x.NextRecordAsync()).Returns(() => NextRecordFromEnum(recordYielderEnum));
                stream.Setup(x => x.GetKeysAsync()).Returns(() => Task.FromResult(TestRecordYielder.Keys.ToArray()));

                var cursor  = new ResultCursor(stream.Object);
                var records = new List <IRecord>();

                while (await cursor.FetchAsync())
                {
                    records.Add(cursor.Current);
                }

                records.Count.Should().Be(10);
            }
예제 #5
0
            public async void ShouldReturnRecordsImmediatelyWhenReady()
            {
                var recordYielder     = new TestRecordYielder(5, 10, _output);
                var recordYielderEnum = recordYielder.Records.GetEnumerator();

                var stream = new Mock <IResultStream>();

                stream.Setup(x => x.NextRecordAsync()).Returns(() => NextRecordFromEnum(recordYielderEnum));
                stream.Setup(x => x.GetKeysAsync()).Returns(() => Task.FromResult(TestRecordYielder.Keys.ToArray()));

                var result  = new ResultCursor(stream.Object);
                var records = new List <IRecord>();
                var count   = 5;

                while (count > 0 && await result.FetchAsync())
                {
                    records.Add(result.Current);
                    count--;
                }

                records.Count.Should().Be(5);
            }
예제 #6
0
 public async Task <IResultSummary> ConsumeResults()
 {
     return(await ResultCursor.ConsumeAsync().ConfigureAwait(false));
 }