private static Tuple <string, string> ShortenAndEncode(BufferedEnumerable value, int position, char pointer) { int start = value.GetStartIndex(position); int end = value.GetEndIndex(position); var printedValue = new StringBuilder(100); var printedPointer = new StringBuilder(100); var simpleTypeName = ConvertToSimpleTypeName(value.Sequence.GetType().GetTypeInfo()); printedValue.AppendFormat("{0} [", simpleTypeName); printedPointer.Append(' ', simpleTypeName.Length + 2); if (start > 0) { printedValue.Append("···, "); printedPointer.Append(" "); } for (int idx = start; idx < end; ++idx) { var item = value[idx]; int paddingLength = 1; if (idx != start) { printedValue.Append(", "); printedPointer.Append(" "); } if (item is char c && Encodings.TryGetValue(c, out string encoding)) { printedValue.Append(encoding); paddingLength = encoding.Length; }
public void PackageExtensionsFind_TwoPackagesInCollectionAndQueryableResultsPutInBufferedEnumerable_OnePackageInBufferedEnumerable() { List <IPackage> packages = new List <IPackage>(); // Need to add descriptiosn otherwise we get a null reference when enumerating results // in BufferedEnumerable var package1 = new FakePackage() { Id = "Test", Description = "b" }; var package2 = new FakePackage() { Id = "Another", Description = "a" }; packages.Add(package1); packages.Add(package2); IQueryable <IPackage> query = packages.AsQueryable(); IQueryable <IPackage> filteredResults = query.Find("Test"); var collection = new BufferedEnumerable <IPackage>(filteredResults, 10); IPackage foundPackage = collection.First(); Assert.AreEqual("Test", foundPackage.Id); }
public SequenceEqualException(BufferedEnumerable expected, BufferedEnumerable actual, int expectedIndex, int actualIndex) : base(expected.Sequence, actual.Sequence) { actualSequence = actual; expectedSequence = expected; ActualIndex = actualIndex; ExpectedIndex = expectedIndex; }
public void TakingMoreThanBufferSizesReturnsItems() { // Arrange var e = new BufferedEnumerable<int>(Enumerable.Range(0, 10000).AsQueryable(), 5); // Act var items = e.Take(20).ToList(); // Assert Assert.Equal(20, items.Count); }
public void TakingMoreThanBufferSizesReturnsItems() { // Arrange var e = new BufferedEnumerable <int>(Enumerable.Range(0, 10000).AsQueryable(), 5); // Act var items = e.Take(20).ToList(); // Assert Assert.Equal(20, items.Count); }
public void ShouldCallCleanup() { // Arrange bool cleanedUp = false; var list = BufferedEnumerable.Create("ABC".ToIterator(), () => cleanedUp = true) .ToList(); // Act Assert.AreEqual(3, list.Count); SpinWait.SpinUntil(() => cleanedUp, 1000); Assert.True(cleanedUp); }
public void BufferedEnumeratorTakingMoreThanBufferSizeQueriesSourceMoreThanOnce() { // Arrange var state = new BufferedEnumerable<int>.QueryState<int>(5); var query = Enumerable.Range(0, 10000).AsQueryable(); var e = new BufferedEnumerable<int>.BufferedEnumerator<int>(state, query, 5); e.Reset(); // Act for (int i = 0; i < 6; i++) { e.MoveNext(); } // Assert Assert.AreEqual(10, state.Cache.Count); }
public void IfNoMoreItemsInSourceSetsIsEmpty() { // Arrange var state = new BufferedEnumerable<int>.QueryState<int>(5); var query = Enumerable.Range(0, 5).AsQueryable(); var e = new BufferedEnumerable<int>.BufferedEnumerator<int>(state, query, 1); e.Reset(); // Act for (int i = 0; i < 5; i++) { e.MoveNext(); } // Assert Assert.IsTrue(e.IsEmpty); Assert.AreEqual(5, state.Cache.Count); }
public static IEnumerable <IDictionary <string, object> > ToBufferedEnumerable(this IDbCommand command) { try { command.Connection.Open(); } catch (DbException ex) { throw new AdoAdapterException(ex.Message, ex); } var reader = command.ExecuteReaderWithExceptionWrap(); var index = reader.CreateDictionaryIndex(); return(BufferedEnumerable.Create(() => reader.Read() ? Maybe.Some(reader.ToDictionary(index)) : Maybe <IDictionary <string, object> > .None, () => { using (command.Connection) using (command) using (reader) {}})); }
public void BufferedEnumeratorTakingMoreThanBufferSizeQueriesSourceMoreThanOnce() { // Arrange var state = new BufferedEnumerable <int> .QueryState <int>(5); var query = Enumerable.Range(0, 10000).AsQueryable(); var e = new BufferedEnumerable <int> .BufferedEnumerator <int>(state, query, 5); e.Reset(); // Act for (int i = 0; i < 6; i++) { e.MoveNext(); } // Assert Assert.Equal(10, state.Cache.Count); }
public void IfNoMoreItemsInSourceSetsIsEmpty() { // Arrange var state = new BufferedEnumerable <int> .QueryState <int>(5); var query = Enumerable.Range(0, 5).AsQueryable(); var e = new BufferedEnumerable <int> .BufferedEnumerator <int>(state, query, 1); e.Reset(); // Act for (int i = 0; i < 5; i++) { e.MoveNext(); } // Assert Assert.True(e.IsEmpty); Assert.Equal(5, state.Cache.Count); }
public static IEnumerable <IDictionary <string, object> > ToBufferedEnumerable(this IDbCommand command, IDbConnection connection, IDictionary <string, int> index) { try { if (connection.State == ConnectionState.Closed) { connection.Open(); } } catch (DbException ex) { throw new AdoAdapterException(ex.Message, ex); } var reader = command.ExecuteReaderWithExceptionWrap(); return(BufferedEnumerable.Create(() => reader.Read() ? Maybe.Some(reader.ToDictionary(index)) : Maybe <IDictionary <string, object> > .None, () => DisposeCommandAndReader(connection, command, reader))); }
public void PackageExtensionsFind_TwoPackagesInCollectionAndQueryableResultsPutInBufferedEnumerable_OnePackageInBufferedEnumerable() { List<IPackage> packages = new List<IPackage>(); // Need to add descriptiosn otherwise we get a null reference when enumerating results // in BufferedEnumerable var package1 = new FakePackage() { Id = "Test", Description = "b" }; var package2 = new FakePackage() { Id = "Another", Description = "a" }; packages.Add(package1); packages.Add(package2); IQueryable<IPackage> query = packages.AsQueryable(); IQueryable<IPackage> filteredResults = query.Find("Test"); var collection = new BufferedEnumerable<IPackage>(filteredResults, 10); IPackage foundPackage = collection.First(); Assert.AreEqual("Test", foundPackage.Id); }