diff options
author | Colin Cross <ccross@android.com> | 2017-05-05 16:16:24 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2017-05-05 18:22:30 -0700 |
commit | 7e0eaf15b9eec975e45f9e5a27294a0bf0ef9beb (patch) | |
tree | 32b67b132ce43197f4ee78816881d50e1124c1a1 /android/variable_test.go | |
parent | 2030a8cbcb91305b94d843d275bafee611b4a4f5 (diff) | |
download | build_soong-7e0eaf15b9eec975e45f9e5a27294a0bf0ef9beb.tar.gz build_soong-7e0eaf15b9eec975e45f9e5a27294a0bf0ef9beb.tar.bz2 build_soong-7e0eaf15b9eec975e45f9e5a27294a0bf0ef9beb.zip |
Support %s in product variable properties
Support using strings as product variable substitutions, and
add tests for printfIntoProperty.
Test: varaible_test.go
Change-Id: I06cfadfb1d3fc81da72fb71323706df20426c8b7
Diffstat (limited to 'android/variable_test.go')
-rw-r--r-- | android/variable_test.go | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/android/variable_test.go b/android/variable_test.go new file mode 100644 index 00000000..ce9ba548 --- /dev/null +++ b/android/variable_test.go @@ -0,0 +1,124 @@ +// Copyright 2015 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 android + +import ( + "reflect" + "testing" +) + +type printfIntoPropertyTestCase struct { + in string + val interface{} + out string + err bool +} + +var printfIntoPropertyTestCases = []printfIntoPropertyTestCase{ + { + in: "%d", + val: 0, + out: "0", + }, + { + in: "%d", + val: 1, + out: "1", + }, + { + in: "%d", + val: 2, + out: "2", + }, + { + in: "%d", + val: false, + out: "0", + }, + { + in: "%d", + val: true, + out: "1", + }, + { + in: "%d", + val: -1, + out: "-1", + }, + + { + in: "-DA=%d", + val: 1, + out: "-DA=1", + }, + { + in: "-DA=%du", + val: 1, + out: "-DA=1u", + }, + { + in: "-DA=%s", + val: "abc", + out: "-DA=abc", + }, + { + in: `-DA="%s"`, + val: "abc", + out: `-DA="abc"`, + }, + + { + in: "%%", + err: true, + }, + { + in: "%d%s", + err: true, + }, + { + in: "%d,%s", + err: true, + }, + { + in: "%d", + val: "", + err: true, + }, + { + in: "%d", + val: 1.5, + err: true, + }, + { + in: "%f", + val: 1.5, + err: true, + }, +} + +func TestPrintfIntoProperty(t *testing.T) { + for _, testCase := range printfIntoPropertyTestCases { + s := testCase.in + v := reflect.ValueOf(&s).Elem() + err := printfIntoProperty(v, testCase.val) + if err != nil && !testCase.err { + t.Errorf("unexpected error %s", err) + } else if err == nil && testCase.err { + t.Errorf("expected error") + } else if err == nil && v.String() != testCase.out { + t.Errorf("expected %q got %q", testCase.out, v.String()) + } + } +} |