diff options
author | 2018-03-06 18:29:27 +0800 | |
---|---|---|
committer | 2018-03-09 13:41:56 +0800 | |
commit | 7922ab8da69cc777a86d1062831d479cb908bd98 (patch) | |
tree | 55ffad157d278a9b360a0fe0466c270ebacfd29d /android/util_test.go | |
parent | 5e877b1a86cf85c6e388e347c878c86a6379cc64 (diff) |
RemoveFromList() should remove all matches
RemoveFromList() should remove all matches. Before this commit,
RemoveFromList() only removes the first match. This commit rewrites
RemoveFromList() so that it will remove all matches. Besides, a unit
test is written.
Note: aosp/461936 wants to make sure libc.so precedes libdl.so in
DT_NEEDED entries. However, if there are two "libdl" in shared_libs,
aosp/461936 won't achieve its goal because RemoveFromList() (prior to
this commit) only removes the first "libdl".
Bug: 62815515
Test: Build sailfish and check libstagefright.so
Change-Id: I9bec563cbf800bff4bd508fb21e28869a92cfe56
Diffstat (limited to 'android/util_test.go')
-rw-r--r-- | android/util_test.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/android/util_test.go b/android/util_test.go index dc8b9080c..1c791b240 100644 --- a/android/util_test.go +++ b/android/util_test.go @@ -300,3 +300,62 @@ func TestRemoveListFromList(t *testing.T) { t.Errorf(" got: %#v", out) } } + +func TestRemoveFromList(t *testing.T) { + testcases := []struct { + name string + key string + input []string + expectedFound bool + expectedOut []string + }{ + { + name: "remove_one_match", + key: "a", + input: []string{"a", "b", "c"}, + expectedFound: true, + expectedOut: []string{"b", "c"}, + }, + { + name: "remove_three_matches", + key: "a", + input: []string{"a", "b", "a", "c", "a"}, + expectedFound: true, + expectedOut: []string{"b", "c"}, + }, + { + name: "remove_zero_matches", + key: "X", + input: []string{"a", "b", "a", "c", "a"}, + expectedFound: false, + expectedOut: []string{"a", "b", "a", "c", "a"}, + }, + { + name: "remove_all_matches", + key: "a", + input: []string{"a", "a", "a", "a"}, + expectedFound: true, + expectedOut: []string{}, + }, + } + + for _, testCase := range testcases { + t.Run(testCase.name, func(t *testing.T) { + found, out := RemoveFromList(testCase.key, testCase.input) + if found != testCase.expectedFound { + t.Errorf("incorrect output:") + t.Errorf(" key: %#v", testCase.key) + t.Errorf(" input: %#v", testCase.input) + t.Errorf(" expected: %#v", testCase.expectedFound) + t.Errorf(" got: %#v", found) + } + if !reflect.DeepEqual(out, testCase.expectedOut) { + t.Errorf("incorrect output:") + t.Errorf(" key: %#v", testCase.key) + t.Errorf(" input: %#v", testCase.input) + t.Errorf(" expected: %#v", testCase.expectedOut) + t.Errorf(" got: %#v", out) + } + }) + } +} |