public async Task TestReplacing() { string fileName = CommaDelimitedFileUnitTest.ComposeFileName(); try { IReadOnlyCollection<string> columnNames = Enumerable.Range(0, CommaDelimitedFileUnitTest.CountColumns) .Select( (int item) => item.ToString(CultureInfo.InvariantCulture)) .ToArray(); IRow rowOne; ITabularFileAdapter fileStore = null; string replacementValue; 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()); rowOne = await fileStore.InsertRow(columnsWritten); Assert.IsNotNull(rowOne); Assert.IsFalse(string.IsNullOrWhiteSpace(rowOne.Key)); IRow rowTwo = await fileStore.InsertRow(columnsWritten); Assert.IsNotNull(rowTwo); Assert.IsFalse(string.IsNullOrWhiteSpace(rowTwo.Key)); Assert.IsFalse(string.Equals(rowOne.Key, rowTwo.Key, StringComparison.OrdinalIgnoreCase)); string columnName = columnsWritten.Keys.Last(); replacementValue = Guid.NewGuid().ToString(); columnsWritten[columnName] = replacementValue; IRow rowReplacment = new Row(rowOne.Key, columnsWritten); await fileStore.ReplaceRow(rowReplacment); } finally { if (fileStore != null) { fileStore.Dispose(); fileStore = null; } } IReadOnlyCollection<string> lines = File.ReadAllLines(fileName); Assert.AreEqual(3, lines.LongCount()); Assert.AreEqual( 1, lines .Where( (string item) => item.StartsWith(rowOne.Key, StringComparison.OrdinalIgnoreCase) && item.EndsWith(replacementValue, StringComparison.OrdinalIgnoreCase)) .LongCount()); } finally { if (File.Exists(fileName)) { File.Delete(fileName); } } }