Bladeren bron

assert len > 0

kevin 4 jaren geleden
bovenliggende
commit
8291eabc2c
4 gewijzigde bestanden met toevoegingen van 23 en 0 verwijderingen
  1. 4 0
      core/collection/ring.go
  2. 6 0
      core/collection/ring_test.go
  3. 5 0
      core/fx/fn.go
  4. 8 0
      core/fx/fn_test.go

+ 4 - 0
core/collection/ring.go

@@ -6,6 +6,10 @@ type Ring struct {
 }
 
 func NewRing(n int) *Ring {
+	if n < 1 {
+		panic("n should be greater than 0")
+	}
+
 	return &Ring{
 		elements: make([]interface{}, n),
 	}

+ 6 - 0
core/collection/ring_test.go

@@ -6,6 +6,12 @@ import (
 	"github.com/stretchr/testify/assert"
 )
 
+func TestNewRing(t *testing.T) {
+	assert.Panics(t, func() {
+		NewRing(0)
+	})
+}
+
 func TestRingLess(t *testing.T) {
 	ring := NewRing(5)
 	for i := 0; i < 3; i++ {

+ 5 - 0
core/fx/fn.go

@@ -162,6 +162,7 @@ func (p Stream) Head(n int64) Stream {
 	if n < 1 {
 		panic("n must be greater than 0")
 	}
+
 	source := make(chan interface{})
 
 	go func() {
@@ -247,6 +248,10 @@ func (p Stream) Sort(less LessFunc) Stream {
 }
 
 func (p Stream) Tail(n int64) Stream {
+	if n < 1 {
+		panic("n should be greater than 0")
+	}
+
 	source := make(chan interface{})
 
 	go func() {

+ 8 - 0
core/fx/fn_test.go

@@ -294,6 +294,14 @@ func TestTail(t *testing.T) {
 	assert.Equal(t, 7, result)
 }
 
+func TestTailZero(t *testing.T) {
+	assert.Panics(t, func() {
+		Just(1, 2, 3, 4).Tail(0).Reduce(func(pipe <-chan interface{}) (interface{}, error) {
+			return nil, nil
+		})
+	})
+}
+
 func TestWalk(t *testing.T) {
 	var result int
 	Just(1, 2, 3, 4, 5).Walk(func(item interface{}, pipe chan<- interface{}) {