xref: /aosp_15_r20/build/soong/starlark_fmt/format_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright 2022 Google Inc. All rights reserved.
2*333d2b36SAndroid Build Coastguard Worker//
3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*333d2b36SAndroid Build Coastguard Worker//
7*333d2b36SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*333d2b36SAndroid Build Coastguard Worker//
9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*333d2b36SAndroid Build Coastguard Worker// limitations under the License.
14*333d2b36SAndroid Build Coastguard Worker
15*333d2b36SAndroid Build Coastguard Workerpackage starlark_fmt
16*333d2b36SAndroid Build Coastguard Worker
17*333d2b36SAndroid Build Coastguard Workerimport (
18*333d2b36SAndroid Build Coastguard Worker	"testing"
19*333d2b36SAndroid Build Coastguard Worker)
20*333d2b36SAndroid Build Coastguard Worker
21*333d2b36SAndroid Build Coastguard Workerfunc simpleFormat(s string) string {
22*333d2b36SAndroid Build Coastguard Worker	return "%s"
23*333d2b36SAndroid Build Coastguard Worker}
24*333d2b36SAndroid Build Coastguard Worker
25*333d2b36SAndroid Build Coastguard Workerfunc TestPrintEmptyStringList(t *testing.T) {
26*333d2b36SAndroid Build Coastguard Worker	in := []string{}
27*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
28*333d2b36SAndroid Build Coastguard Worker	out := PrintStringList(in, indentLevel)
29*333d2b36SAndroid Build Coastguard Worker	expectedOut := "[]"
30*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
31*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
32*333d2b36SAndroid Build Coastguard Worker	}
33*333d2b36SAndroid Build Coastguard Worker}
34*333d2b36SAndroid Build Coastguard Worker
35*333d2b36SAndroid Build Coastguard Workerfunc TestPrintSingleElementStringList(t *testing.T) {
36*333d2b36SAndroid Build Coastguard Worker	in := []string{"a"}
37*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
38*333d2b36SAndroid Build Coastguard Worker	out := PrintStringList(in, indentLevel)
39*333d2b36SAndroid Build Coastguard Worker	expectedOut := `["a"]`
40*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
41*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
42*333d2b36SAndroid Build Coastguard Worker	}
43*333d2b36SAndroid Build Coastguard Worker}
44*333d2b36SAndroid Build Coastguard Worker
45*333d2b36SAndroid Build Coastguard Workerfunc TestPrintMultiElementStringList(t *testing.T) {
46*333d2b36SAndroid Build Coastguard Worker	in := []string{"a", "b"}
47*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
48*333d2b36SAndroid Build Coastguard Worker	out := PrintStringList(in, indentLevel)
49*333d2b36SAndroid Build Coastguard Worker	expectedOut := `[
50*333d2b36SAndroid Build Coastguard Worker    "a",
51*333d2b36SAndroid Build Coastguard Worker    "b",
52*333d2b36SAndroid Build Coastguard Worker]`
53*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
54*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
55*333d2b36SAndroid Build Coastguard Worker	}
56*333d2b36SAndroid Build Coastguard Worker}
57*333d2b36SAndroid Build Coastguard Worker
58*333d2b36SAndroid Build Coastguard Workerfunc TestPrintEmptyList(t *testing.T) {
59*333d2b36SAndroid Build Coastguard Worker	in := []string{}
60*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
61*333d2b36SAndroid Build Coastguard Worker	out := PrintList(in, indentLevel, simpleFormat)
62*333d2b36SAndroid Build Coastguard Worker	expectedOut := "[]"
63*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
64*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
65*333d2b36SAndroid Build Coastguard Worker	}
66*333d2b36SAndroid Build Coastguard Worker}
67*333d2b36SAndroid Build Coastguard Worker
68*333d2b36SAndroid Build Coastguard Workerfunc TestPrintSingleElementList(t *testing.T) {
69*333d2b36SAndroid Build Coastguard Worker	in := []string{"1"}
70*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
71*333d2b36SAndroid Build Coastguard Worker	out := PrintList(in, indentLevel, simpleFormat)
72*333d2b36SAndroid Build Coastguard Worker	expectedOut := `[1]`
73*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
74*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
75*333d2b36SAndroid Build Coastguard Worker	}
76*333d2b36SAndroid Build Coastguard Worker}
77*333d2b36SAndroid Build Coastguard Worker
78*333d2b36SAndroid Build Coastguard Workerfunc TestPrintMultiElementList(t *testing.T) {
79*333d2b36SAndroid Build Coastguard Worker	in := []string{"1", "2"}
80*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
81*333d2b36SAndroid Build Coastguard Worker	out := PrintList(in, indentLevel, simpleFormat)
82*333d2b36SAndroid Build Coastguard Worker	expectedOut := `[
83*333d2b36SAndroid Build Coastguard Worker    1,
84*333d2b36SAndroid Build Coastguard Worker    2,
85*333d2b36SAndroid Build Coastguard Worker]`
86*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
87*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
88*333d2b36SAndroid Build Coastguard Worker	}
89*333d2b36SAndroid Build Coastguard Worker}
90*333d2b36SAndroid Build Coastguard Worker
91*333d2b36SAndroid Build Coastguard Workerfunc TestListWithNonZeroIndent(t *testing.T) {
92*333d2b36SAndroid Build Coastguard Worker	in := []string{"1", "2"}
93*333d2b36SAndroid Build Coastguard Worker	indentLevel := 1
94*333d2b36SAndroid Build Coastguard Worker	out := PrintList(in, indentLevel, simpleFormat)
95*333d2b36SAndroid Build Coastguard Worker	expectedOut := `[
96*333d2b36SAndroid Build Coastguard Worker        1,
97*333d2b36SAndroid Build Coastguard Worker        2,
98*333d2b36SAndroid Build Coastguard Worker    ]`
99*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
100*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
101*333d2b36SAndroid Build Coastguard Worker	}
102*333d2b36SAndroid Build Coastguard Worker}
103*333d2b36SAndroid Build Coastguard Worker
104*333d2b36SAndroid Build Coastguard Workerfunc TestStringListDictEmpty(t *testing.T) {
105*333d2b36SAndroid Build Coastguard Worker	in := map[string][]string{}
106*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
107*333d2b36SAndroid Build Coastguard Worker	out := PrintStringListDict(in, indentLevel)
108*333d2b36SAndroid Build Coastguard Worker	expectedOut := `{}`
109*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
110*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
111*333d2b36SAndroid Build Coastguard Worker	}
112*333d2b36SAndroid Build Coastguard Worker}
113*333d2b36SAndroid Build Coastguard Worker
114*333d2b36SAndroid Build Coastguard Workerfunc TestStringListDict(t *testing.T) {
115*333d2b36SAndroid Build Coastguard Worker	in := map[string][]string{
116*333d2b36SAndroid Build Coastguard Worker		"key1": []string{},
117*333d2b36SAndroid Build Coastguard Worker		"key2": []string{"a"},
118*333d2b36SAndroid Build Coastguard Worker		"key3": []string{"1", "2"},
119*333d2b36SAndroid Build Coastguard Worker	}
120*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
121*333d2b36SAndroid Build Coastguard Worker	out := PrintStringListDict(in, indentLevel)
122*333d2b36SAndroid Build Coastguard Worker	expectedOut := `{
123*333d2b36SAndroid Build Coastguard Worker    "key1": [],
124*333d2b36SAndroid Build Coastguard Worker    "key2": ["a"],
125*333d2b36SAndroid Build Coastguard Worker    "key3": [
126*333d2b36SAndroid Build Coastguard Worker        "1",
127*333d2b36SAndroid Build Coastguard Worker        "2",
128*333d2b36SAndroid Build Coastguard Worker    ],
129*333d2b36SAndroid Build Coastguard Worker}`
130*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
131*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
132*333d2b36SAndroid Build Coastguard Worker	}
133*333d2b36SAndroid Build Coastguard Worker}
134*333d2b36SAndroid Build Coastguard Worker
135*333d2b36SAndroid Build Coastguard Workerfunc TestPrintDict(t *testing.T) {
136*333d2b36SAndroid Build Coastguard Worker	in := map[string]string{
137*333d2b36SAndroid Build Coastguard Worker		"key1": `""`,
138*333d2b36SAndroid Build Coastguard Worker		"key2": `"a"`,
139*333d2b36SAndroid Build Coastguard Worker		"key3": `[
140*333d2b36SAndroid Build Coastguard Worker        1,
141*333d2b36SAndroid Build Coastguard Worker        2,
142*333d2b36SAndroid Build Coastguard Worker    ]`,
143*333d2b36SAndroid Build Coastguard Worker	}
144*333d2b36SAndroid Build Coastguard Worker	indentLevel := 0
145*333d2b36SAndroid Build Coastguard Worker	out := PrintDict(in, indentLevel)
146*333d2b36SAndroid Build Coastguard Worker	expectedOut := `{
147*333d2b36SAndroid Build Coastguard Worker    "key1": "",
148*333d2b36SAndroid Build Coastguard Worker    "key2": "a",
149*333d2b36SAndroid Build Coastguard Worker    "key3": [
150*333d2b36SAndroid Build Coastguard Worker        1,
151*333d2b36SAndroid Build Coastguard Worker        2,
152*333d2b36SAndroid Build Coastguard Worker    ],
153*333d2b36SAndroid Build Coastguard Worker}`
154*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
155*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
156*333d2b36SAndroid Build Coastguard Worker	}
157*333d2b36SAndroid Build Coastguard Worker}
158*333d2b36SAndroid Build Coastguard Worker
159*333d2b36SAndroid Build Coastguard Workerfunc TestPrintDictWithIndent(t *testing.T) {
160*333d2b36SAndroid Build Coastguard Worker	in := map[string]string{
161*333d2b36SAndroid Build Coastguard Worker		"key1": `""`,
162*333d2b36SAndroid Build Coastguard Worker		"key2": `"a"`,
163*333d2b36SAndroid Build Coastguard Worker	}
164*333d2b36SAndroid Build Coastguard Worker	indentLevel := 1
165*333d2b36SAndroid Build Coastguard Worker	out := PrintDict(in, indentLevel)
166*333d2b36SAndroid Build Coastguard Worker	expectedOut := `{
167*333d2b36SAndroid Build Coastguard Worker        "key1": "",
168*333d2b36SAndroid Build Coastguard Worker        "key2": "a",
169*333d2b36SAndroid Build Coastguard Worker    }`
170*333d2b36SAndroid Build Coastguard Worker	if out != expectedOut {
171*333d2b36SAndroid Build Coastguard Worker		t.Errorf("Expected %q, got %q", expectedOut, out)
172*333d2b36SAndroid Build Coastguard Worker	}
173*333d2b36SAndroid Build Coastguard Worker}
174