package instructions import "testing" type testCase struct { name string args []string attributes map[string]bool expected []string } func initTestCases() []testCase { testCases := []testCase{} testCases = append(testCases, testCase{ name: "empty args", args: []string{}, attributes: make(map[string]bool), expected: []string{}, }) jsonAttributes := make(map[string]bool) jsonAttributes["json"] = true testCases = append(testCases, testCase{ name: "json attribute with one element", args: []string{"foo"}, attributes: jsonAttributes, expected: []string{"foo"}, }) testCases = append(testCases, testCase{ name: "json attribute with two elements", args: []string{"foo", "bar"}, attributes: jsonAttributes, expected: []string{"foo", "bar"}, }) testCases = append(testCases, testCase{ name: "no attributes", args: []string{"foo", "bar"}, attributes: nil, expected: []string{"foo bar"}, }) return testCases } func TestHandleJSONArgs(t *testing.T) { testCases := initTestCases() for _, test := range testCases { arguments := handleJSONArgs(test.args, test.attributes) if len(arguments) != len(test.expected) { t.Fatalf("In test \"%s\": length of returned slice is incorrect. Expected: %d, got: %d", test.name, len(test.expected), len(arguments)) } for i := range test.expected { if arguments[i] != test.expected[i] { t.Fatalf("In test \"%s\": element as position %d is incorrect. Expected: %s, got: %s", test.name, i, test.expected[i], arguments[i]) } } } }