public void TestRenderSchema(CsvFileLog.ColumnKind column, int columnIndex, int columnCount) { string logFile = Path.Combine(Path.GetTempPath(), GetRandomFileName()); // schema: // <empty>,...,<empty>,<column>,<empty>,...,<empty> // where // - <column> is at position 'columnIndex' // - total number of columns is 'columnCount' var schema = Repeat(CsvFileLog.ColumnKind.Empty, columnIndex - 1) .Concat(new[] { column }) .Concat(Repeat(CsvFileLog.ColumnKind.Empty, columnCount - columnIndex - 1)); using (var log = new CsvFileLog(logFile, schema, serviceName: "CsvFileLogTests")) { var actual = RenderMessage(log, TestMessage); var expected = string.Join(",", schema .Select(col => RenderColumn(log, col, TestMessage)) .Select(str => '"' + str + '"')); actual.Should().BeEquivalentTo(expected); } IEnumerable <CsvFileLog.ColumnKind> Repeat(CsvFileLog.ColumnKind col, int count) { return(Enumerable.Range(0, Math.Max(0, count)).Select(_ => col)); } }
private string RenderColumn(CsvFileLog log, CsvFileLog.ColumnKind col, string message) { return(log.RenderColumn(col, TestTimestamp, TestThreadId, TestSeverity, message)); }