describe Math do
  it "factorial" do
    Math.factorial(0).should eq 1
    Math.factorial(1).should eq 1
    Math.factorial(2).should eq 2
    Math.factorial(3).should eq 6
    Math.factorial(4).should eq 24
    Math.factorial(5).should eq 120
    Math.factorial(6).should eq 720
    Math.factorial(6).should eq 720
  end

  it "factorial big" do
    res = (1..20).to_a.reduce(BigInt.new(1)) { |e, i| e * BigInt.new(i) }
    Math.factorial(BigInt.new(20)).should eq res
  end
end
