github.com/mithrandie/csvq@v1.18.1/lib/json/query_structure_test.go (about)

     1  package json
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  var elementFieldLabelTests = []struct {
     8  	Element Element
     9  	Expect  string
    10  }{
    11  	{
    12  		Element: Element{
    13  			Label: "key",
    14  		},
    15  		Expect: "key",
    16  	},
    17  	{
    18  		Element: Element{
    19  			Label: "ke.y",
    20  		},
    21  		Expect: "ke\\.y",
    22  	},
    23  	{
    24  		Element: Element{
    25  			Label: "key",
    26  			Child: Element{
    27  				Label: "key2",
    28  			},
    29  		},
    30  		Expect: "key.key2",
    31  	},
    32  	{
    33  		Element: Element{
    34  			Label: "key",
    35  			Child: ArrayItem{
    36  				Index: 2,
    37  			},
    38  		},
    39  		Expect: "key[2]",
    40  	},
    41  }
    42  
    43  func TestElement_FieldLabel(t *testing.T) {
    44  	for _, v := range elementFieldLabelTests {
    45  		result := v.Element.FieldLabel()
    46  		if result != v.Expect {
    47  			t.Errorf("result = %q, want %q for %#v", result, v.Expect, v.Element)
    48  		}
    49  	}
    50  }
    51  
    52  var arrayItemFieldLabelTests = []struct {
    53  	ArrayItem ArrayItem
    54  	Expect    string
    55  }{
    56  	{
    57  		ArrayItem: ArrayItem{
    58  			Index: 0,
    59  		},
    60  		Expect: "[0]",
    61  	},
    62  	{
    63  		ArrayItem: ArrayItem{
    64  			Index: 0,
    65  			Child: Element{
    66  				Label: "key2",
    67  			},
    68  		},
    69  		Expect: "[0].key2",
    70  	},
    71  	{
    72  		ArrayItem: ArrayItem{
    73  			Index: 0,
    74  			Child: ArrayItem{
    75  				Index: 2,
    76  			},
    77  		},
    78  		Expect: "[0][2]",
    79  	},
    80  }
    81  
    82  func TestArrayItem_FieldLabel(t *testing.T) {
    83  	for _, v := range arrayItemFieldLabelTests {
    84  		result := v.ArrayItem.FieldLabel()
    85  		if result != v.Expect {
    86  			t.Errorf("result = %q, want %q for %#v", result, v.Expect, v.ArrayItem)
    87  		}
    88  	}
    89  }
    90  
    91  var columnExprFieldLabelTests = []struct {
    92  	ColumnExpr FieldExpr
    93  	Expect     string
    94  }{
    95  	{
    96  		ColumnExpr: FieldExpr{
    97  			Element: Element{Label: "key"},
    98  		},
    99  		Expect: "key",
   100  	},
   101  	{
   102  		ColumnExpr: FieldExpr{
   103  			Element: Element{Label: "key"},
   104  			Alias:   "alias",
   105  		},
   106  		Expect: "alias",
   107  	},
   108  }
   109  
   110  func TestColumnExpr_FieldLabel(t *testing.T) {
   111  	for _, v := range columnExprFieldLabelTests {
   112  		result := v.ColumnExpr.FieldLabel()
   113  		if result != v.Expect {
   114  			t.Errorf("result = %q, want %q for %#v", result, v.Expect, v.ColumnExpr)
   115  		}
   116  	}
   117  }