| package main |
| |
| import ( |
| "strings" |
| "testing" |
| |
| bpparser "github.com/google/blueprint/parser" |
| ) |
| |
| var valueTestCases = []struct { |
| blueprint string |
| expected string |
| }{ |
| { |
| blueprint: `test = false`, |
| expected: `false`, |
| }, |
| { |
| blueprint: `test = Variable`, |
| expected: `$(Variable)`, |
| }, |
| { |
| blueprint: `test = "string"`, |
| expected: `string`, |
| }, |
| { |
| blueprint: `test = ["a", "b"]`, |
| expected: `\ |
| a \ |
| b`, |
| }, |
| { |
| blueprint: `test = Var + "b"`, |
| expected: `$(Var)b`, |
| }, |
| { |
| blueprint: `test = ["a"] + ["b"]`, |
| expected: `\ |
| a\ |
| b`, |
| }, |
| } |
| |
| func TestValueToString(t *testing.T) { |
| for _, testCase := range valueTestCases { |
| blueprint, errs := bpparser.Parse("", strings.NewReader(testCase.blueprint), nil) |
| if len(errs) > 0 { |
| t.Errorf("Failed to read blueprint: %q", errs) |
| } |
| |
| str := valueToString(blueprint.Defs[0].(*bpparser.Assignment).Value) |
| if str != testCase.expected { |
| t.Errorf("test case: %s", testCase.blueprint) |
| t.Errorf("unexpected difference:") |
| t.Errorf(" expected: %s", testCase.expected) |
| t.Errorf(" got: %s", str) |
| } |
| } |
| } |