private void RemoveEntries(Func <IDEEvent, bool> removeCondition) { var tempFileName = _ioUtils.GetTempFileName(); var removed = new List <IDEEvent>(); using (var stream = _ioUtils.OpenFile(tempFileName, FileMode.Append, FileAccess.Write)) { using (var writer = new JsonLogWriter <IDEEvent>(stream)) { using (var reader = NewLogReader()) { reader.ReadAll().ForEach( entry => { if (!removeCondition(entry)) { writer.Write(entry); } else { removed.Add(entry); } }); } } } _ioUtils.DeleteFile(Path); _ioUtils.MoveFile(tempFileName, Path); EntriesRemoved(removed); }
public void ShouldAppendToStreamWrittenByOtherWriter() { var writer = new JsonLogWriter <object>(_logStream); writer.Write(new SerializationTestTarget { Id = "foo" }); _writer.Write(new SerializationTestTarget { Id = "bar" }); var serialization = _logStream.AsString(); Assert.AreEqual("{\"$type\":\"KaVE.Commons.Tests.Utils.Json.SerializationTestTarget, KaVE.Commons.Tests\",\"Id\":\"foo\"}\r\n{\"$type\":\"KaVE.Commons.Tests.Utils.Json.SerializationTestTarget, KaVE.Commons.Tests\",\"Id\":\"bar\"}\r\n", serialization); }