github.com/mithrandie/csvq@v1.18.1/lib/query/alias_test.go (about)

     1  package query
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/mithrandie/csvq/lib/parser"
     8  )
     9  
    10  var aliasMapAddTests = []struct {
    11  	Name   string
    12  	Alias  parser.Identifier
    13  	Path   string
    14  	Result AliasMap
    15  	Error  string
    16  }{
    17  	{
    18  		Name:  "AliasMap Add",
    19  		Alias: parser.Identifier{Literal: "tbl"},
    20  		Path:  "/path/to/tbl1.csv",
    21  		Result: AliasMap{
    22  			"TBL": "/PATH/TO/TBL1.CSV",
    23  		},
    24  	},
    25  	{
    26  		Name:  "AliasMap Add Table Name Duplicate Error",
    27  		Alias: parser.Identifier{Literal: "tbl"},
    28  		Path:  "/path/to/tbl2.csv",
    29  		Error: "table name tbl is a duplicate",
    30  	},
    31  }
    32  
    33  func TestAliasMap_Add(t *testing.T) {
    34  	aliases := AliasMap{}
    35  
    36  	for _, v := range aliasMapAddTests {
    37  		err := aliases.Add(v.Alias, v.Path)
    38  		if err != nil {
    39  			if len(v.Error) < 1 {
    40  				t.Errorf("%s: unexpected error %q", v.Name, err)
    41  			} else if err.Error() != v.Error {
    42  				t.Errorf("%s: error %q, want error %q", v.Name, err.Error(), v.Error)
    43  			}
    44  			continue
    45  		}
    46  		if 0 < len(v.Error) {
    47  			t.Errorf("%s: no error, want error %q", v.Name, v.Error)
    48  			continue
    49  		}
    50  		if !reflect.DeepEqual(aliases, v.Result) {
    51  			t.Errorf("%s: result = %s, want %s", v.Name, aliases, v.Result)
    52  		}
    53  	}
    54  }
    55  
    56  var aliasMapGetTests = []struct {
    57  	Name   string
    58  	Alias  parser.Identifier
    59  	Result string
    60  	Error  string
    61  }{
    62  	{
    63  		Name:   "AliasMap Get",
    64  		Alias:  parser.Identifier{Literal: "tbl"},
    65  		Result: "/PATH/TO/TBL1.CSV",
    66  	},
    67  	{
    68  		Name:   "AliasMap Get Empty Path",
    69  		Alias:  parser.Identifier{Literal: "tbl2"},
    70  		Result: "",
    71  	},
    72  	{
    73  		Name:  "AliasMap Get Not Loaded Error",
    74  		Alias: parser.Identifier{Literal: "notloaded"},
    75  		Error: "table notloaded is not loaded",
    76  	},
    77  }
    78  
    79  func TestAliasMap_Get(t *testing.T) {
    80  	aliases := AliasMap{
    81  		"TBL":  "/PATH/TO/TBL1.CSV",
    82  		"TBL2": "",
    83  	}
    84  
    85  	for _, v := range aliasMapGetTests {
    86  		result, err := aliases.Get(v.Alias)
    87  		if err != nil {
    88  			if len(v.Error) < 1 {
    89  				t.Errorf("%s: unexpected error %q", v.Name, err)
    90  			} else if err.Error() != v.Error {
    91  				t.Errorf("%s: error %q, want error %q", v.Name, err.Error(), v.Error)
    92  			}
    93  			continue
    94  		}
    95  		if 0 < len(v.Error) {
    96  			t.Errorf("%s: no error, want error %q", v.Name, v.Error)
    97  			continue
    98  		}
    99  		if result != v.Result {
   100  			t.Errorf("%s: result = %s, want %s", v.Name, result, v.Result)
   101  		}
   102  	}
   103  }