summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2023-09-05 15:35:37 +0300
committerPaul Buetow <pbuetow@mimecast.com>2023-09-07 15:32:25 +0300
commit8fea5a782363830064399f90fe4190323482b398 (patch)
tree65b5aaab370838bdd5fd76d2d920140d1149a664
parente0cfd91c1df8ce4ab474f27e2c15c58316194a00 (diff)
Add CSV unit test
-rw-r--r--internal/mapr/logformat/csv_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/internal/mapr/logformat/csv_test.go b/internal/mapr/logformat/csv_test.go
new file mode 100644
index 0000000..1baf032
--- /dev/null
+++ b/internal/mapr/logformat/csv_test.go
@@ -0,0 +1,54 @@
+package logformat
+
+import (
+ "strings"
+ "testing"
+
+ "github.com/mimecast/dtail/internal/protocol"
+)
+
+func TestCSVLogFormat(t *testing.T) {
+ parser, err := NewParser("csv", nil)
+ if err != nil {
+ t.Errorf("Unable to create parser: %s", err.Error())
+ }
+
+ headers := []string{"name", "last_name", "color", "profession", "employee_number"}
+ dataLine1 := []string{"Paul", "Buetow", "Orange", "Site Reliability Engineer", "4242"}
+ dataLine2 := []string{"Peter", "Bauer", "Black", "CEO", "1"}
+
+ inputs := []string{
+ strings.Join(headers, protocol.CSVDelimiter),
+ strings.Join(dataLine1, protocol.CSVDelimiter),
+ strings.Join(dataLine2, protocol.CSVDelimiter),
+ }
+
+ // First line is the header!
+ if _, err := parser.MakeFields(inputs[0]); err != ErrIgnoreFields {
+ t.Errorf("Unable to parse the CSV header")
+ }
+
+ // First data line
+ fields, err := parser.MakeFields(inputs[1])
+ if err != nil {
+ t.Errorf("Unable to parse first CSV data line: %s", err.Error())
+ }
+ if val := fields["name"]; val != "Paul" {
+ t.Errorf("Expected 'name' to be 'Paul' but got '%s'", val)
+ }
+ if val := fields["employee_number"]; val != "4242" {
+ t.Errorf("Expected 'employee_number' to be '4242' but got '%s'", val)
+ }
+
+ // Second data line
+ fields, err = parser.MakeFields(inputs[2])
+ if err != nil {
+ t.Errorf("Unable to parse first CSV data line: %s", err.Error())
+ }
+ if val := fields["last_name"]; val != "Bauer" {
+ t.Errorf("Expected 'last_name' to be 'Bauer' but got '%s'", val)
+ }
+ if val := fields["color"]; val != "Black" {
+ t.Errorf("Expected 'color' to be 'Black' but got '%s'", val)
+ }
+}