private static async Task TestExchangeLogParser(DelimitedTextLogContext context)
        {
            var output = new List <IEnvelope <KeyValueLogRecord> >();
            var parser = new AsyncExchangeLogParser(NullLogger.Instance, null, null, 1024);
            await parser.ParseRecordsAsync(context, output, 10);

            Assert.Equal(2, output.Count);
            var record = output[0].Data;

            Assert.Equal("2017-05-22T17:33:35.632Z", record["date-time"]);
            Assert.Equal(new DateTime(2017, 5, 22, 17, 33, 35, 632, DateTimeKind.Utc).ToLocalTime(), record.Timestamp);
            Assert.Equal(string.Empty, record["client-ip"]);
            Assert.Equal("EX13D13UWA001", record["client-hostname"]);
            Assert.Equal("S:AMA=SUM|action=p|error=|atch=0;S:CompCost=|ETR=0;S:DeliveryPriority=Normal;S:[email protected];S:AccountForest=ant.amazon.com", record["custom-data"]);
            Assert.Equal("S:DeliveryPriority=Normal;S:[email protected];S:AccountForest=ant.amazon.com", output[1].Data["custom-data"]);

            var envelope = (ILogEnvelope)output[0];

            Assert.Equal(6, envelope.LineNumber);
        }
        private static async Task TestWssLogsWithContext(DelimitedTextLogContext context)
        {
            var parser = new AsyncULSLogParser(NullLogger.Instance, null, 1024);
            var output = new List <IEnvelope <KeyValueLogRecord> >();

            await parser.ParseRecordsAsync(context, output, 10);

            Assert.Equal(2, output.Count);
            var record = output[0].Data;

            _ = output[0].GetMessage("json");
            Assert.Equal("03/07/2018 22:54:54.97", record["Timestamp"]);
            Assert.Equal(new DateTime(2018, 3, 7, 22, 54, 54, 970), record.Timestamp);
            Assert.Equal("SharePoint Foundation", record["Area"]);
            Assert.Equal("Warning", record["Level"]);

            var envelope = (ILogEnvelope)output[0];

            Assert.Equal(2, envelope.LineNumber);

            Assert.Equal("03/07/2018 22:54:54.97", output[1].Data["Timestamp"]);
        }