summaryrefslogtreecommitdiff
path: root/android/util_test.go
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2023-07-07 17:07:50 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2023-07-07 17:07:50 +0000
commit702ef0a07aea7b453fac6df2ad1a4ffb2576be3b (patch)
tree126eeb15566847582354844298525b2e80e9fe16 /android/util_test.go
parentf67bc4484823b59a211acc45f96a5ba4cd055274 (diff)
parentb5e3f7dad55010cbc847a5cfc7135eac9ca0d948 (diff)
Merge changes I70f81120,If8f2534e into main
* changes: Export ReverseSliceInPlace and ReverseSlice Make CopyOf generic
Diffstat (limited to 'android/util_test.go')
-rw-r--r--android/util_test.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/android/util_test.go b/android/util_test.go
index 0e28b568b..20161e52d 100644
--- a/android/util_test.go
+++ b/android/util_test.go
@@ -20,6 +20,7 @@ import (
"strconv"
"strings"
"testing"
+ "unsafe"
)
var firstUniqueStringsTestCases = []struct {
@@ -754,3 +755,65 @@ func TestSortedUniqueStringValues(t *testing.T) {
})
}
}
+
+var reverseTestCases = []struct {
+ name string
+ in []string
+ expected []string
+}{
+ {
+ name: "nil",
+ in: nil,
+ expected: nil,
+ },
+ {
+ name: "empty",
+ in: []string{},
+ expected: []string{},
+ },
+ {
+ name: "one",
+ in: []string{"one"},
+ expected: []string{"one"},
+ },
+ {
+ name: "even",
+ in: []string{"one", "two"},
+ expected: []string{"two", "one"},
+ },
+ {
+ name: "odd",
+ in: []string{"one", "two", "three"},
+ expected: []string{"three", "two", "one"},
+ },
+}
+
+func TestReverseSliceInPlace(t *testing.T) {
+ for _, testCase := range reverseTestCases {
+ t.Run(testCase.name, func(t *testing.T) {
+ slice := CopyOf(testCase.in)
+ slice2 := slice
+ ReverseSliceInPlace(slice)
+ if !reflect.DeepEqual(slice, testCase.expected) {
+ t.Errorf("expected %#v, got %#v", testCase.expected, slice)
+ }
+ if unsafe.SliceData(slice) != unsafe.SliceData(slice2) {
+ t.Errorf("expected slices to share backing array")
+ }
+ })
+ }
+}
+
+func TestReverseSlice(t *testing.T) {
+ for _, testCase := range reverseTestCases {
+ t.Run(testCase.name, func(t *testing.T) {
+ slice := ReverseSlice(testCase.in)
+ if !reflect.DeepEqual(slice, testCase.expected) {
+ t.Errorf("expected %#v, got %#v", testCase.expected, slice)
+ }
+ if slice != nil && unsafe.SliceData(testCase.in) == unsafe.SliceData(slice) {
+ t.Errorf("expected slices to have different backing arrays")
+ }
+ })
+ }
+}