product more robust against empty input

This commit is contained in:
Simon Hafner 2014-01-30 23:55:43 -06:00
commit e01fb17d02
2 changed files with 6 additions and 0 deletions

View file

@ -148,6 +148,7 @@ proc product*[T](x: openarray[seq[T]]): seq[seq[T]] =
var next: seq[T] = @[] var next: seq[T] = @[]
next.setLen(x.len) next.setLen(x.len)
for i in 0..(x.len-1): for i in 0..(x.len-1):
if len(x[i]) == 0: return
initial[i] = len(x[i])-1 initial[i] = len(x[i])-1
indexes = initial indexes = initial
while true: while true:

View file

@ -1,6 +1,11 @@
import unittest import unittest
import algorithm
suite "product": suite "product":
test "empty input":
check product[int](newSeq[seq[int]]()) == newSeq[seq[int]]()
test "bit more empty input":
check product[int](@[newSeq[int](), @[], @[]]) == newSeq[seq[int]]()
test "a simple case of one element": test "a simple case of one element":
check product(@[@[1,2]]) == @[@[1,2]] check product(@[@[1,2]]) == @[@[1,2]]
test "two elements": test "two elements":