// Copyright 2022 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package starlark_fmt import ( "testing" ) func simpleFormat(s string) string { return "%s" } func TestPrintEmptyStringList(t *testing.T) { in := []string{} indentLevel := 0 out := PrintStringList(in, indentLevel) expectedOut := "[]" if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestPrintSingleElementStringList(t *testing.T) { in := []string{"a"} indentLevel := 0 out := PrintStringList(in, indentLevel) expectedOut := `["a"]` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestPrintMultiElementStringList(t *testing.T) { in := []string{"a", "b"} indentLevel := 0 out := PrintStringList(in, indentLevel) expectedOut := `[ "a", "b", ]` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestPrintEmptyList(t *testing.T) { in := []string{} indentLevel := 0 out := PrintList(in, indentLevel, simpleFormat) expectedOut := "[]" if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestPrintSingleElementList(t *testing.T) { in := []string{"1"} indentLevel := 0 out := PrintList(in, indentLevel, simpleFormat) expectedOut := `[1]` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestPrintMultiElementList(t *testing.T) { in := []string{"1", "2"} indentLevel := 0 out := PrintList(in, indentLevel, simpleFormat) expectedOut := `[ 1, 2, ]` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestListWithNonZeroIndent(t *testing.T) { in := []string{"1", "2"} indentLevel := 1 out := PrintList(in, indentLevel, simpleFormat) expectedOut := `[ 1, 2, ]` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestStringListDictEmpty(t *testing.T) { in := map[string][]string{} indentLevel := 0 out := PrintStringListDict(in, indentLevel) expectedOut := `{}` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestStringListDict(t *testing.T) { in := map[string][]string{ "key1": []string{}, "key2": []string{"a"}, "key3": []string{"1", "2"}, } indentLevel := 0 out := PrintStringListDict(in, indentLevel) expectedOut := `{ "key1": [], "key2": ["a"], "key3": [ "1", "2", ], }` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestPrintDict(t *testing.T) { in := map[string]string{ "key1": `""`, "key2": `"a"`, "key3": `[ 1, 2, ]`, } indentLevel := 0 out := PrintDict(in, indentLevel) expectedOut := `{ "key1": "", "key2": "a", "key3": [ 1, 2, ], }` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } } func TestPrintDictWithIndent(t *testing.T) { in := map[string]string{ "key1": `""`, "key2": `"a"`, } indentLevel := 1 out := PrintDict(in, indentLevel) expectedOut := `{ "key1": "", "key2": "a", }` if out != expectedOut { t.Errorf("Expected %q, got %q", expectedOut, out) } }