Project

General

Profile

nth_prime_test.rb

Tests - claytonflesher (Clayton Flesher), 01/05/2016 07:00 PM

 
1
#!/usr/bin/env ruby
2
gem 'minitest', '>= 5.0.0'
3
require 'minitest/autorun'
4

    
5
require 'prime'
6
ERROR_MESSAGE = <<-MSG
7
Using Ruby's Prime class is probably the best way to do this in a
8
'real' application; but this is an exercise, not a real application,
9
so you're expected to implement this yourself.
10
MSG
11

    
12
class Prime
13
  [:each, :new, :prime?, :take].each do |m|
14
    define_method(m) { |*_| fail ERROR_MESSAGE }
15
  end
16
end
17

    
18
class Integer
19
  [:prime?, :each_prime].each do |m|
20
    define_method(m) { |*_| fail ERROR_MESSAGE }
21
  end
22
end
23

    
24
require_relative 'nth_prime'
25

    
26
class TestPrimes < Minitest::Test
27
  def test_first
28
    assert_equal 2, Prime.nth(1)
29
  end
30

    
31
  def test_second
32
    skip
33
    assert_equal 3, Prime.nth(2)
34
  end
35

    
36
  def test_sixth_prime
37
    skip
38
    assert_equal 13, Prime.nth(6)
39
  end
40

    
41
  def test_big_prime
42
    skip
43
    assert_equal 104_743, Prime.nth(10_001)
44
  end
45

    
46
  def test_weird_case
47
    skip
48
    assert_raises ArgumentError do
49
      Prime.nth(0)
50
    end
51
  end
52
end