Skip to content

Commit

Permalink
TST more combinatorics tests
Browse files Browse the repository at this point in the history
  • Loading branch information
hayd committed Jan 5, 2015
1 parent 71a36fd commit ff0470c
Showing 1 changed file with 26 additions and 11 deletions.
37 changes: 26 additions & 11 deletions test/combinatorics.jl
Original file line number Diff line number Diff line change
@@ -1,20 +1,37 @@
@test factorial(7) == 5040
@test factorial(7,3) == 7*6*5*4
@test binomial(5,-1) == 0
@test binomial(5,10) == 0
@test binomial(5,3) == 10
@test binomial(2,1) == 2
@test binomial(1,2) == 0
@test binomial(-2,1) == -2
@test binomial(2,-1) == 0

#Issue 6154
@test binomial(int32(34), int32(15)) == binomial(BigInt(34), BigInt(15)) == 1855967520
@test binomial(int64(67), int64(29)) == binomial(BigInt(67), BigInt(29)) == 7886597962249166160
@test binomial(int128(131), int128(62)) == binomial(BigInt(131), BigInt(62)) == 157311720980559117816198361912717812000
@test_throws InexactError binomial(int64(67), int64(30))

p = shuffle([1:1000])
@test isperm(p)
@test all(invperm(invperm(p)) .== p)

push!(p, 1)
@test !isperm(p)

a = randcycle(10)
@test ipermute!(permute!([1:10], a),a) == [1:10]

@test collect(combinations("abc",3)) == ["abc"]
@test collect(combinations("abc",2)) == ["ab","ac","bc"]
@test collect(combinations("abc",1)) == ["a","b","c"]
@test collect(combinations("abc",0)) == [""]
@test collect(permutations("abc")) == ["abc","acb","bac","bca","cab","cba"]

@test collect(filter(x->(iseven(x[1])),permutations([1,2,3]))) == Any[[2,1,3],[2,3,1]]
@test collect(filter(x->(iseven(x[3])),permutations([1,2,3]))) == Any[[1,3,2],[3,1,2]]
@test collect(filter(x->(iseven(x[1])),combinations([1,2,3],2))) == Any[[2,3]]

@test collect(partitions(4)) == Any[[4], [3,1], [2,2], [2,1,1], [1,1,1,1]]
@test collect(partitions(8,3)) == Any[[6,1,1], [5,2,1], [4,3,1], [4,2,2], [3,3,2]]
@test collect(partitions(8, 1)) == Any[[8]]
Expand All @@ -36,18 +53,16 @@ for n = 0:7, k = 1:factorial(n)
@test nthperm(p) == k
end

#Issue 6154
@test binomial(int32(34), int32(15)) == binomial(BigInt(34), BigInt(15)) == 1855967520
@test binomial(int64(67), int64(29)) == binomial(BigInt(67), BigInt(29)) == 7886597962249166160
@test binomial(int128(131), int128(62)) == binomial(BigInt(131), BigInt(62)) == 157311720980559117816198361912717812000

# issue #6579
@test factorial(7) == 5040
@test factorial(7,3) == 7*6*5*4
@test factorial(0) == 1
@test_throws DomainError factorial(-1)

@test factorial(int64(20)) == 2432902008176640000
# issue #6579
@test_throws OverflowError factorial(int64(21))
@test_throws DomainError factorial(-1)
@test typeof(factorial(int8(2))) == typeof(factorial(int8(1)))
if Int === Int32
@test factorial(int32(12)) === int32(479001600)
@test_throws OverflowError factorial(int32(13))
@test factorial(int32(12)) === int32(479001600)
@test_throws OverflowError factorial(int32(13))
end

0 comments on commit ff0470c

Please sign in to comment.