public override Task SaveAsync(List <AnalogyLogMessage> messages, string fileName) => Task.Factory.StartNew(async() => { if (fileName.EndsWith(".ajson", StringComparison.InvariantCultureIgnoreCase)) { AnalogyJsonLogFile logFile = new AnalogyJsonLogFile(); await logFile.Save(messages, fileName); } else if (fileName.EndsWith(".abin", StringComparison.InvariantCultureIgnoreCase)) { AnalogyMessagePackFormat logFile = new AnalogyMessagePackFormat(); await logFile.Save(messages, fileName); } });
public async Task TestWriteAndRead() { string fileName = "test.bin"; cancellationTokenSource = new CancellationTokenSource(); AnalogyMessagePackFormat msgPack = new AnalogyMessagePackFormat(); List <AnalogyLogMessage> originals = new List <AnalogyLogMessage> { new AnalogyLogMessage("test1", AnalogyLogLevel.Critical, AnalogyLogClass.General, "test"), new AnalogyLogMessage("test2", AnalogyLogLevel.Error, AnalogyLogClass.General, "test") }; await msgPack.Save(originals, fileName); Assert.IsTrue(File.Exists(fileName)); MessageHandlerForTesting handler = new MessageHandlerForTesting(); var msg = (await msgPack.ReadFromFile(fileName, cancellationTokenSource.Token, handler)).ToList(); Assert.IsTrue(msg.Count == 2); Assert.IsTrue(msg.First().Level == AnalogyLogLevel.Critical); Assert.IsTrue(msg.Skip(1).First().Text == "test2"); File.Delete(fileName); }