Add soong_build primary builder
Initial build logic for building android with soong. It can build
a variety of C and C++ files for arm/arm64 and host.
Change-Id: I10eb37c2c2a50be6af1bb5fd568c0962b9476bf0
diff --git a/androidmk/parser/make_strings_test.go b/androidmk/parser/make_strings_test.go
new file mode 100644
index 0000000..db5840c
--- /dev/null
+++ b/androidmk/parser/make_strings_test.go
@@ -0,0 +1,96 @@
+package parser
+
+import (
+ "strings"
+ "testing"
+)
+
+var splitNTestCases = []struct {
+ in *MakeString
+ expected []*MakeString
+ sep string
+ n int
+}{
+ {
+ in: &MakeString{
+ strings: []string{
+ "a b c",
+ "d e f",
+ " h i j",
+ },
+ variables: []Variable{
+ variable{name: SimpleMakeString("var1")},
+ variable{name: SimpleMakeString("var2")},
+ },
+ },
+ sep: " ",
+ n: -1,
+ expected: []*MakeString{
+ SimpleMakeString("a"),
+ SimpleMakeString("b"),
+ &MakeString{
+ strings: []string{"c", "d"},
+ variables: []Variable{
+ variable{name: SimpleMakeString("var1")},
+ },
+ },
+ SimpleMakeString("e"),
+ &MakeString{
+ strings: []string{"f", ""},
+ variables: []Variable{
+ variable{name: SimpleMakeString("var2")},
+ },
+ },
+ SimpleMakeString("h"),
+ SimpleMakeString("i"),
+ SimpleMakeString("j"),
+ },
+ },
+ {
+ in: &MakeString{
+ strings: []string{
+ "a b c",
+ "d e f",
+ " h i j",
+ },
+ variables: []Variable{
+ variable{name: SimpleMakeString("var1")},
+ variable{name: SimpleMakeString("var2")},
+ },
+ },
+ sep: " ",
+ n: 3,
+ expected: []*MakeString{
+ SimpleMakeString("a"),
+ SimpleMakeString("b"),
+ &MakeString{
+ strings: []string{"c", "d e f", " h i j"},
+ variables: []Variable{
+ variable{name: SimpleMakeString("var1")},
+ variable{name: SimpleMakeString("var2")},
+ },
+ },
+ },
+ },
+}
+
+func TestMakeStringSplitN(t *testing.T) {
+ for _, test := range splitNTestCases {
+ got := test.in.SplitN(test.sep, test.n)
+ gotString := dumpArray(got)
+ expectedString := dumpArray(test.expected)
+ if gotString != expectedString {
+ t.Errorf("expected:\n%s\ngot:\n%s", expectedString, gotString)
+ }
+ }
+}
+
+func dumpArray(a []*MakeString) string {
+ ret := make([]string, len(a))
+
+ for i, s := range a {
+ ret[i] = s.Dump()
+ }
+
+ return strings.Join(ret, "|||")
+}