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 }