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  }