]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/slices/slices_test.go
slices: add in-place Reverse function
[gostls13.git] / src / slices / slices_test.go
index 2f3a03bd9f53f2a99c03a72b96d8cd26fa90ae5a..a99299321f7c0d84164466c8d6b1d84f35207935 100644 (file)
@@ -623,6 +623,34 @@ func TestClip(t *testing.T) {
        }
 }
 
+func TestReverse(t *testing.T) {
+       even := []int{3, 1, 4, 1, 5, 9} // len = 6
+       Reverse(even)
+       if want := []int{9, 5, 1, 4, 1, 3}; !Equal(even, want) {
+               t.Errorf("Reverse(even) = %v, want %v", even, want)
+       }
+
+       odd := []int{3, 1, 4, 1, 5, 9, 2} // len = 7
+       Reverse(odd)
+       if want := []int{2, 9, 5, 1, 4, 1, 3}; !Equal(odd, want) {
+               t.Errorf("Reverse(odd) = %v, want %v", odd, want)
+       }
+
+       words := strings.Fields("one two three")
+       Reverse(words)
+       if want := strings.Fields("three two one"); !Equal(words, want) {
+               t.Errorf("Reverse(words) = %v, want %v", words, want)
+       }
+
+       singleton := []string{"one"}
+       Reverse(singleton)
+       if want := []string{"one"}; !Equal(singleton, want) {
+               t.Errorf("Reverse(singeleton) = %v, want %v", singleton, want)
+       }
+
+       Reverse[string](nil)
+}
+
 // naiveReplace is a baseline implementation to the Replace function.
 func naiveReplace[S ~[]E, E any](s S, i, j int, v ...E) S {
        s = Delete(s, i, j)