diff --git a/lib/prime.rb b/lib/prime.rb index ebe012b..9eb66de 100644 --- a/lib/prime.rb +++ b/lib/prime.rb @@ -99,9 +99,24 @@ class Prime warn "Prime::new is obsolete. use Prime::instance or class methods of Prime." end + def include?(n) # :nodoc: + prime?(n) # avoid infinite loop + end + class << self extend Forwardable include Enumerable + + def include?(n) # :nodoc: + if n.is_a?(Module) + # Class#include? + included_modules.include?(n) + else + # Enumerable#include? + prime?(n) # avoid infinite loop + end + end + # Returns the default instance of Prime. def instance; @the_instance end diff --git a/test/test_prime.rb b/test/test_prime.rb index 885406f..01e5ee8 100644 --- a/test/test_prime.rb +++ b/test/test_prime.rb @@ -171,4 +171,16 @@ class TestPrime < Test::Unit::TestCase assert_not_include Prime.each(7*37).to_a, 7*37, "[ruby-dev:39465]" end + + def test_include? + assert Prime.include?(2) + assert !Prime.include?(4) + + assert Prime.instance.include?(2) + assert !Prime.instance.include?(4) + + # Class#include? + assert Prime.include?(Enumerable) + assert !Prime.include?(String) + end end