extern crate combinatorics;

use combinatorics::rust::*;

#[test]
fn it_arrayifies(){
  assert_eq!(arrayify(4), vec![1,2,3,4]);
  assert_eq!(arrayify(5), vec![1,2,3,4,5])
}

#[test]
fn it_factorials(){
  assert_eq!(factorial(vec![1,2,3,4]), 24);
  assert_eq!(factorial(vec![1,2,3,4,5] ), 120)
}

#[test]
fn it_permutates(){
  assert_eq!(permutations(6, 4), 360);
}

#[test]
fn it_combinatorials(){
  assert_eq!(combinatorial_count(6, 4), 15);
  assert_eq!(combinatorial_count(8, 2), 28);
  assert_eq!(combinatorial_count(18, 3), 816);
  assert_eq!(combinatorial_count(42, 5), 850668)
}

#[test]
#[should_panic]
fn it_barfs(){
  assert_eq!(permutations(4, 6), 360);
  assert_eq!(combinatorial_count(4, 6), 15);
}