Skip to content

Commit 64fa7f1

Browse files
authored
Merge pull request #3 from shio-phys/add_testcases
add testcases of prime library
2 parents af4a43f + a74d3e6 commit 64fa7f1

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

test/test_prime.rb

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ def test_each
2727
assert_equal PRIMES, primes
2828
end
2929

30+
def test_integer_each_prime
31+
primes = []
32+
Integer.each_prime(1000) do |p|
33+
break if p > 541
34+
primes << p
35+
end
36+
assert_equal PRIMES, primes
37+
end
38+
3039
def test_each_by_prime_number_theorem
3140
3.upto(15) do |i|
3241
max = 2**i
@@ -124,6 +133,78 @@ def test_prime_each_basic_argument_checking
124133
assert_raise(ArgumentError) { Prime.prime?(1.2) }
125134
end
126135

136+
def test_prime?
137+
assert_equal Prime.prime?(1), false
138+
assert_equal Prime.prime?(2), true
139+
assert_equal Prime.prime?(4), false
140+
end
141+
142+
class TestPseudoPrimeGenerator < Test::Unit::TestCase
143+
def test_upper_bound
144+
pseudo_prime_generator = Prime::PseudoPrimeGenerator.new(42)
145+
assert_equal pseudo_prime_generator.upper_bound, 42
146+
end
147+
148+
def test_succ
149+
pseudo_prime_generator = Prime::PseudoPrimeGenerator.new(42)
150+
assert_raise(NotImplementedError) { pseudo_prime_generator.succ }
151+
end
152+
153+
def test_next
154+
pseudo_prime_generator = Prime::PseudoPrimeGenerator.new(42)
155+
assert_raise(NotImplementedError) { pseudo_prime_generator.next }
156+
end
157+
158+
def test_rewind
159+
pseudo_prime_generator = Prime::PseudoPrimeGenerator.new(42)
160+
assert_raise(NotImplementedError) { pseudo_prime_generator.rewind }
161+
end
162+
end
163+
164+
class TestTrialDivisionGenerator < Test::Unit::TestCase
165+
# The first 100 prime numbers
166+
PRIMES = [
167+
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
168+
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83,
169+
89, 97, 101, 103, 107, 109, 113, 127, 131,
170+
137, 139, 149, 151, 157, 163, 167, 173, 179,
171+
181, 191, 193, 197, 199, 211, 223, 227, 229,
172+
233, 239, 241, 251, 257, 263, 269, 271, 277,
173+
281, 283, 293, 307, 311, 313, 317, 331, 337,
174+
347, 349, 353, 359, 367, 373, 379, 383, 389,
175+
397, 401, 409, 419, 421, 431, 433, 439, 443,
176+
449, 457, 461, 463, 467, 479, 487, 491, 499,
177+
503, 509, 521, 523, 541,
178+
]
179+
180+
def test_each
181+
primes = []
182+
Prime.each(nil, Prime::TrialDivisionGenerator.new) do |p|
183+
break if p > 541
184+
primes << p
185+
end
186+
assert_equal PRIMES, primes
187+
end
188+
189+
def test_rewind
190+
generator = Prime::TrialDivisionGenerator.new
191+
assert_equal generator.next, 2
192+
assert_equal generator.next, 3
193+
generator.rewind
194+
assert_equal generator.next, 2
195+
end
196+
end
197+
198+
class TestGenerator23 < Test::Unit::TestCase
199+
def test_rewind
200+
generator = Prime::Generator23.new
201+
assert_equal generator.next, 2
202+
assert_equal generator.next, 3
203+
generator.rewind
204+
assert_equal generator.next, 2
205+
end
206+
end
207+
127208
class TestInteger < Test::Unit::TestCase
128209
def test_prime_division
129210
pd = PRIMES.inject(&:*).prime_division

0 commit comments

Comments
 (0)