public void Format( JsonMessageFormatterStyle style, LogMessageField fields, LogMessage message, string newline, string expected) { // test set knows that the newline character sequence is not relevant, if newline == null // => set it explicitly to satisfy the formatter if (newline == null) newline = "\n"; var formatter = new JsonMessageFormatter { Style = style, Newline = newline }; if (fields.HasFlag(LogMessageField.Timestamp)) formatter.AddTimestampField(); if (fields.HasFlag(LogMessageField.HighPrecisionTimestamp)) formatter.AddHighPrecisionTimestampField(); if (fields.HasFlag(LogMessageField.LogWriterName)) formatter.AddLogWriterField(); if (fields.HasFlag(LogMessageField.LogLevelName)) formatter.AddLogLevelField(); if (fields.HasFlag(LogMessageField.Tags)) formatter.AddTagsField(); if (fields.HasFlag(LogMessageField.ApplicationName)) formatter.AddApplicationNameField(); if (fields.HasFlag(LogMessageField.ProcessName)) formatter.AddProcessNameField(); if (fields.HasFlag(LogMessageField.ProcessId)) formatter.AddProcessIdField(); if (fields.HasFlag(LogMessageField.Text)) formatter.AddTextField(); Assert.Equal(fields, formatter.FormattedFields); string output = formatter.Format(message); Assert.Equal(expected, output); }
public void Format_EscapingKeys(JsonMessageFormatterStyle style, LogMessageField fields) { var message = new LogMessage(); var formatter = new JsonMessageFormatter { Style = style, Newline = "\n" }; if (fields.HasFlag(LogMessageField.Timestamp)) formatter.AddTimestampField("u", sUnescapedString); if (fields.HasFlag(LogMessageField.HighPrecisionTimestamp)) formatter.AddHighPrecisionTimestampField(sUnescapedString); if (fields.HasFlag(LogMessageField.LogWriterName)) formatter.AddLogWriterField(sUnescapedString); if (fields.HasFlag(LogMessageField.LogLevelName)) formatter.AddLogLevelField(sUnescapedString); if (fields.HasFlag(LogMessageField.Tags)) formatter.AddTagsField(sUnescapedString); if (fields.HasFlag(LogMessageField.ApplicationName)) formatter.AddApplicationNameField(sUnescapedString); if (fields.HasFlag(LogMessageField.ProcessName)) formatter.AddProcessNameField(sUnescapedString); if (fields.HasFlag(LogMessageField.ProcessId)) formatter.AddProcessIdField(sUnescapedString); if (fields.HasFlag(LogMessageField.Text)) formatter.AddTextField(sUnescapedString); Assert.Equal(fields, formatter.FormattedFields); // prepare regex to match output string pattern; switch (style) { case JsonMessageFormatterStyle.Compact: pattern = "^{\"(.+)\":.+}$"; break; case JsonMessageFormatterStyle.OneLine: pattern = "^{ \"(.+)\" : .+ }$"; break; case JsonMessageFormatterStyle.Beautified: default: pattern = "^{\n \"(.+)\" : .+\n}$"; break; } var regex = new Regex(pattern); // check whether the key has been escaped properly (without escaping the solidus) formatter.EscapeSolidus = false; string output1 = formatter.Format(message); var match1 = regex.Match(output1); Assert.True(match1.Success); Assert.Equal(sEscapedString_WithoutSolidus, match1.Groups[1].Value); // check whether the key has been escaped properly (with escaping the solidus) formatter.EscapeSolidus = true; string output2 = formatter.Format(message); var match2 = regex.Match(output2); Assert.True(match2.Success); Assert.Equal(sEscapedString_WithSolidus, match2.Groups[1].Value); }
public void Format_EscapingValues(JsonMessageFormatterStyle style, LogMessageField fields) { var formatter = new JsonMessageFormatter { Style = style, Newline = "\n" }; string key = ""; var message = new LogMessage(); if (fields.HasFlag(LogMessageField.LogWriterName)) { key = "LogWriter"; formatter.AddLogWriterField(key); message.LogWriterName = sUnescapedString; } if (fields.HasFlag(LogMessageField.LogLevelName)) { key = "LogLevel"; formatter.AddLogLevelField(key); message.LogLevelName = sUnescapedString; } if (fields.HasFlag(LogMessageField.ApplicationName)) { key = "ApplicationName"; formatter.AddApplicationNameField(key); message.ApplicationName = sUnescapedString; } if (fields.HasFlag(LogMessageField.ProcessName)) { key = "ProcessName"; formatter.AddProcessNameField(key); message.ProcessName = sUnescapedString; } if (fields.HasFlag(LogMessageField.Text)) { key = "Text"; formatter.AddTextField(key); message.Text = sUnescapedString; } Assert.Equal(fields, formatter.FormattedFields); // prepare regex to match output string pattern; switch (style) { case JsonMessageFormatterStyle.Compact: pattern = "^{\"(.+)\":\"(.+)\"}$"; break; case JsonMessageFormatterStyle.OneLine: pattern = "^{ \"(.+)\" : \"(.+)\" }$"; break; case JsonMessageFormatterStyle.Beautified: default: pattern = "^{\n \"(.+)\" : \"(.+)\"\n}$"; break; } var regex = new Regex(pattern); // check whether the key has been escaped properly (without escaping the solidus) formatter.EscapeSolidus = false; string output1 = formatter.Format(message); var match1 = regex.Match(output1); Assert.True(match1.Success); Assert.Equal(key, match1.Groups[1].Value); Assert.Equal(sEscapedString_WithoutSolidus, match1.Groups[2].Value); // check whether the key has been escaped properly (with escaping the solidus) formatter.EscapeSolidus = true; string output2 = formatter.Format(message); var match2 = regex.Match(output2); Assert.True(match2.Success); Assert.Equal(key, match2.Groups[1].Value); Assert.Equal(sEscapedString_WithSolidus, match2.Groups[2].Value); }