public void ShouldWaitForAllRecordsToArrive()
            {
                var recordYielder = new TestRecordYielder(5, 10, _output);

                int count  = 0;
                var cursor =
                    new InternalStatementResult(
                        new ListBasedRecordCursor(TestRecordYielder.Keys, () => recordYielder.Records),
                        new BlockingExecutor());
                var t = Task.Factory.StartNew(() =>
                {
                    // ReSharper disable once LoopCanBeConvertedToQuery
                    foreach (var item in cursor)
                    {
                        count++;
                    }

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

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

                recordYielder.AddNew(5);
                t.Wait();
            }
            public void ShouldReturnRecords()
            {
                var recordYielder = new TestRecordYielder(5, 10, _output);
                var cursor        =
                    new InternalStatementResult(new ListBasedRecordCursor(TestRecordYielder.Keys,
                                                                          () => recordYielder.RecordsWithAutoLoad), new BlockingExecutor());
                var records = cursor.ToList();

                records.Count.Should().Be(10);
            }
            public void ShouldReturnRecordsImmediatelyWhenReady()
            {
                var recordYielder = new TestRecordYielder(5, 10, _output);
                var result        =
                    new InternalStatementResult(new ListBasedRecordCursor(TestRecordYielder.Keys, () => recordYielder.Records),
                                                new BlockingExecutor());
                var temp    = result.Take(5);
                var records = temp.ToList();

                records.Count.Should().Be(5);
            }