Commit 29fc03f

mo khan <mo.khan@gmail.com>
2019-10-26 23:08:52
Check boundaries of slice
1 parent b51279e
Changed files (2)
sum.go
@@ -16,3 +16,16 @@ func SumAll(numbers ...[]int) []int {
 	}
 	return sums
 }
+
+func SumAllTails(numbers ...[]int) []int {
+	var sums []int
+	for _, numbers := range numbers {
+		if len(numbers) == 0 {
+			sums = append(sums, 0)
+		} else {
+			tail := numbers[1:]
+			sums = append(sums, Sum(tail))
+		}
+	}
+	return sums
+}
sum_test.go
@@ -33,3 +33,26 @@ func TestSumAll(t *testing.T) {
 		t.Errorf("got %v want %v", got, want)
 	}
 }
+
+func TestSumAllTails(t *testing.T) {
+	checkSums := func(t *testing.T, got, want []int) {
+		t.Helper()
+		if !reflect.DeepEqual(got, want) {
+			t.Errorf("got %v want %v", got, want)
+		}
+	}
+
+	t.Run("make the sums of some slices", func(t *testing.T) {
+		got := SumAllTails([]int{1, 2}, []int{0, 9})
+		want := []int{2, 9}
+
+		checkSums(t, got, want)
+	})
+
+	t.Run("safely sum empty slices", func(t *testing.T) {
+		got := SumAllTails([]int{}, []int{3, 4, 5})
+		want := []int{0, 9}
+
+		checkSums(t, got, want)
+	})
+}