github.com/mithrandie/csvq@v1.18.1/lib/query/format_identifiers_test.go (about) 1 package query 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/mithrandie/csvq/lib/parser" 8 "github.com/mithrandie/csvq/lib/value" 9 10 "github.com/mithrandie/ternary" 11 ) 12 13 func TestFormatTableName(t *testing.T) { 14 path := "/path/to/file.txt" 15 expect := "file" 16 result := FormatTableName(path) 17 if result != expect { 18 t.Errorf("table name = %q, want %q for %q", result, expect, path) 19 } 20 21 path = "/path/to/file" 22 expect = "file" 23 result = FormatTableName(path) 24 if result != expect { 25 t.Errorf("table name = %q, want %q for %q", result, expect, path) 26 } 27 28 path = "file.txt" 29 expect = "file" 30 result = FormatTableName(path) 31 if result != expect { 32 t.Errorf("table name = %q, want %q for %q", result, expect, path) 33 } 34 35 path = "" 36 expect = "" 37 result = FormatTableName(path) 38 if result != expect { 39 t.Errorf("table name = %q, want %q for %q", result, expect, path) 40 } 41 } 42 43 func TestFormatFieldIdentifier(t *testing.T) { 44 location, _ := time.LoadLocation("UTC") 45 46 var e parser.QueryExpression = parser.NewStringValue("str") 47 expect := "@__PT:S:str" 48 result := FormatFieldIdentifier(e) 49 if result != expect { 50 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 51 } 52 53 e = parser.NewIntegerValue(1) 54 expect = "@__PT:I:1" 55 result = FormatFieldIdentifier(e) 56 if result != expect { 57 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 58 } 59 60 e = parser.NewFloatValue(1.2) 61 expect = "@__PT:F:1.2" 62 result = FormatFieldIdentifier(e) 63 if result != expect { 64 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 65 } 66 67 e = parser.PrimitiveType{ 68 Value: value.NewBoolean(true), 69 } 70 expect = "@__PT:B:true" 71 result = FormatFieldIdentifier(e) 72 if result != expect { 73 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 74 } 75 76 e = parser.NewTernaryValue(ternary.TRUE) 77 expect = "@__PT:T:TRUE" 78 result = FormatFieldIdentifier(e) 79 if result != expect { 80 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 81 } 82 83 e = parser.NewDatetimeValueFromString("2006-01-02 15:04:05 -08:00", nil, location) 84 expect = "@__PT:D:2006-01-02T15:04:05-08:00" 85 result = FormatFieldIdentifier(e) 86 if result != expect { 87 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 88 } 89 90 e = parser.NewNullValue() 91 expect = "@__PT:N:NULL" 92 result = FormatFieldIdentifier(e) 93 if result != expect { 94 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 95 } 96 97 e = parser.FieldReference{Column: parser.Identifier{Literal: "column1", Quoted: true}} 98 expect = "@__IDENT:column1" 99 result = FormatFieldIdentifier(e) 100 if result != expect { 101 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 102 } 103 104 e = parser.ColumnNumber{View: parser.Identifier{Literal: "table1"}, Number: value.NewInteger(1)} 105 expect = "table1.1" 106 result = FormatFieldIdentifier(e) 107 if result != expect { 108 t.Errorf("field identifier = %q, want %q for %#v", result, expect, e) 109 } 110 } 111 112 func TestFormatFieldLabel(t *testing.T) { 113 location, _ := time.LoadLocation("UTC") 114 115 var e parser.QueryExpression = parser.NewStringValue("str") 116 expect := "str" 117 result := FormatFieldLabel(e) 118 if result != expect { 119 t.Errorf("field label = %q, want %q for %#v", result, expect, e) 120 } 121 122 e = parser.NewDatetimeValueFromString("2006-01-02 15:04:05 -08:00", nil, location) 123 expect = "2006-01-02T15:04:05-08:00" 124 result = FormatFieldLabel(e) 125 if result != expect { 126 t.Errorf("field label = %q, want %q for %#v", result, expect, e) 127 } 128 129 e = parser.NewIntegerValue(1) 130 expect = "1" 131 result = FormatFieldLabel(e) 132 if result != expect { 133 t.Errorf("field label = %q, want %q for %#v", result, expect, e) 134 } 135 136 e = parser.FieldReference{Column: parser.Identifier{Literal: "column1"}} 137 expect = "column1" 138 result = FormatFieldLabel(e) 139 if result != expect { 140 t.Errorf("field label = %q, want %q for %#v", result, expect, e) 141 } 142 143 e = parser.ColumnNumber{View: parser.Identifier{Literal: "table1"}, Number: value.NewInteger(1)} 144 expect = "table1.1" 145 result = FormatFieldLabel(e) 146 if result != expect { 147 t.Errorf("field label = %q, want %q for %#v", result, expect, e) 148 } 149 }