public async Task TestQuerying() { string fileName = CommaDelimitedFileUnitTest.ComposeFileName(); try { IReadOnlyCollection<string> columnNames = Enumerable.Range(0, CommaDelimitedFileUnitTest.CountColumns) .Select( (int item) => item.ToString(CultureInfo.InvariantCulture)) .ToArray(); ITabularFileAdapter fileStore = null; try { fileStore = new CommaDelimitedFileAdapter(fileName, columnNames); Assert.IsTrue(File.Exists(fileName)); Dictionary<string, string> columnsWritten = columnNames .ToDictionary( (string item) => item, (string item) => Guid.NewGuid().ToString()); IList<string> keys = new List<string>(CommaDelimitedFileUnitTest.CountRows); for (int rowIndex = 0; rowIndex < CommaDelimitedFileUnitTest.CountRows; rowIndex++) { IRow rowWritten = await fileStore.InsertRow(columnsWritten); Assert.IsNotNull(rowWritten); Assert.IsFalse(string.IsNullOrWhiteSpace(rowWritten.Key)); Assert.IsFalse( keys .Any( (string item) => string.Equals(item, rowWritten.Key, StringComparison.OrdinalIgnoreCase))); keys.Add(rowWritten.Key); } IReadOnlyCollection<IRow> rowsRead = await fileStore.Query(columnsWritten); Assert.IsNotNull(rowsRead); Assert.AreEqual(3, rowsRead.Count); Assert.IsTrue( keys .All( (string keyItem) => rowsRead .Any( (IRow rowItem) => string.Equals(keyItem, rowItem.Key, StringComparison.OrdinalIgnoreCase)))); } finally { if (fileStore != null) { fileStore.Dispose(); fileStore = null; } } } finally { if (File.Exists(fileName)) { File.Delete(fileName); } } }