import probstat
# FIRST
# try straight permutations (all the ways to write a list)
c = probstat.Permutation(range(1,4))
should_be = [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
cp = []
for (i) in c:
cp.append(i)
if (should_be != cp):
raise 'Output isnt what it should be'
if (len(cp) != len(c)):
raise 'Len of output does not match len of object'
slice_cp = cp[0:1]
slice = c[0:1]
slice_list = []
for (i) in slice:
slice_list.append(i)
if (slice_list != slice_cp):
raise "slice doesn't equal real output"
if (len(slice) != len(slice_cp)):
raise 'len of slice doesnt match len of real slice'
if (c[-1] != cp[-1]):
raise 'last elements not equal'
if (c[-1] != cp[-1]):
raise 'last elements not equal'
if (c[0] != cp[0]):
raise 'first elements not equal'
if (c[0] != cp[0]):
raise 'first elements not equal'
# SECOND
# try 5 pick 3
c = probstat.Permutation(range(1,5),3)
should_be = [[1, 2, 3],[1, 3, 2],[2, 1, 3],[2, 3, 1],[3, 1, 2],[3, 2, 1],
[1, 2, 4],[1, 4, 2],[2, 1, 4],[2, 4, 1],[4, 1, 2],[4, 2, 1],
[1, 3, 4],[1, 4, 3],[3, 1, 4],[3, 4, 1],[4, 1, 3],[4, 3, 1],
[2, 3, 4],[2, 4, 3],[3, 2, 4],[3, 4, 2],[4, 2, 3],[4, 3, 2]]
cp = []
for (i) in c:
cp.append(i)
if (should_be != cp):
raise 'Output isnt what it should be'
if (len(cp) != len(c)):
raise 'Len of output does not match len of object'
slice_cp = cp[0:1]
slice = c[0:1]
slice_list = []
for (i) in slice:
slice_list.append(i)
if (slice_list != slice_cp):
raise "slice doesn't equal real output"
if (len(slice) != len(slice_cp)):
raise 'len of slice doesnt match len of real slice'
if (slice_cp[-1] != slice_list[-1]):
raise 'last elements not equal'
if (slice_cp[-1] != slice_list[-1]):
raise 'last elements not equal'
if (slice_cp[0] != slice_list[0]):
raise 'first elements not equal'
if (slice_cp[0] != slice_list[0]):
raise 'first elements not equal'
p = probstat.Permutation(range(3,12))
dummy = p[1234:-1] # shouldn't affect anything
plen = len(p)
for (i) in p:
plen -= 1
if (plen < 0):
raise 'Permutation overran'
sl = p[1234:12345]
plen = len(sl)
for (i) in sl:
plen -= 1
if (plen != 0):
print 'plen is %d, should be 0' % (plen)
raise 'Permutation over/under run'
if (len(probstat.Permutation(range(150), 2)) != 22350):
raise 'Permutation len not in cache table calculated WRONG'
syntax highlighted by Code2HTML, v. 0.9.1