Differentiate between empty and nil input

Previously, CopyOf on an empty list was returning nil. With the updates
to SortedUniqueStrings and FirstUniqueStrings, we need to differentiate
between empty lists and nil.

Test: m nothing
Change-Id: I91063ebbe5013cbda5d8f70efde4683c66581599
This commit is contained in:
Spandan Das 2023-04-27 19:34:08 +00:00
parent 8a8714c781
commit cc4da76511
2 changed files with 13 additions and 1 deletions

View file

@ -26,7 +26,11 @@ import (
// CopyOf returns a new slice that has the same contents as s. // CopyOf returns a new slice that has the same contents as s.
func CopyOf(s []string) []string { func CopyOf(s []string) []string {
return append([]string(nil), s...) // If the input is nil, return nil and not an empty list
if s == nil {
return s
}
return append([]string{}, s...)
} }
// Concat returns a new slice concatenated from the two input slices. It does not change the input // Concat returns a new slice concatenated from the two input slices. It does not change the input

View file

@ -381,6 +381,14 @@ func TestRemoveFromList(t *testing.T) {
} }
} }
func TestCopyOfEmptyAndNil(t *testing.T) {
emptyList := []string{}
copyOfEmptyList := CopyOf(emptyList)
AssertBoolEquals(t, "Copy of an empty list should be an empty list and not nil", true, copyOfEmptyList != nil)
copyOfNilList := CopyOf(nil)
AssertBoolEquals(t, "Copy of a nil list should be a nil list and not an empty list", true, copyOfNilList == nil)
}
func ExampleCopyOf() { func ExampleCopyOf() {
a := []string{"1", "2", "3"} a := []string{"1", "2", "3"}
b := CopyOf(a) b := CopyOf(a)