Updated with Rubinius Support
authorJim Weirich <jim.weirich@gmail.com>
Sat, 25 Dec 2010 13:11:31 +0000 (08:11 -0500)
committerJim Weirich <jim.weirich@gmail.com>
Sat, 25 Dec 2010 13:11:31 +0000 (08:11 -0500)
Rakefile
src/about_methods.rb
src/about_objects.rb
src/edgecase.rb

index 19b3bc1..d60dfd2 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -75,7 +75,7 @@ module RubyImpls
 
   # List of expected ruby implementations.
   def self.expected
-    %w(ruby-1.8.6 ruby-1.8.7 ruby-1.9.2 jruby ree)
+    %w(ruby-1.8.6 ruby-1.8.7 ruby-1.9.2 jruby ree rbx)
   end
 end
 
index 1497f9b..0bdb399 100644 (file)
@@ -44,7 +44,7 @@ class AboutMethods < EdgeCase::Koan
       my_global_method
     end
     #--
-    pattern = "wrong (number|#) of arguments"
+    pattern = "wrong (number|#) of arguments|given \\d+, expected \\d+"
     #++
     assert_match(/#{__(pattern)}/, exception.message)
 
index 1faf0a0..64f39ee 100644 (file)
@@ -30,20 +30,22 @@ class AboutObjects < EdgeCase::Koan
     assert_equal __(true), obj.object_id != another_obj.object_id
   end
 
-  def test_some_system_objects_always_have_the_same_id
-    assert_equal __(0), false.object_id
-    assert_equal __(2), true.object_id
-    assert_equal __(4), nil.object_id
-  end
-
-  def test_small_integers_have_fixed_ids
-    assert_equal __(1), 0.object_id
-    assert_equal __(3), 1.object_id
-    assert_equal __(5), 2.object_id
-    assert_equal __(201), 100.object_id
-
-    # THINK ABOUT IT:
-    # What pattern do the object IDs for small integers follow?
+  not_in_ruby_version('rbx') do
+    def test_some_system_objects_always_have_the_same_id
+      assert_equal __(0), false.object_id
+      assert_equal __(2), true.object_id
+      assert_equal __(4), nil.object_id
+    end
+
+    def test_small_integers_have_fixed_ids
+      assert_equal __(1), 0.object_id
+      assert_equal __(3), 1.object_id
+      assert_equal __(5), 2.object_id
+      assert_equal __(201), 100.object_id
+
+      # THINK ABOUT IT:
+      # What pattern do the object IDs for small integers follow?
+    end
   end
 
   def test_clone_creates_a_different_object
index c024438..37dc4a9 100644 (file)
@@ -13,13 +13,18 @@ end
 def ruby_version?(version)
   RUBY_VERSION =~ /^#{version}/ ||
     (version == 'jruby' && defined?(JRUBY_VERSION)) ||
-    (version == 'mri' && ! defined?(JRUBY_VERSION))
+    (version == 'mri' && (! defined?(JRUBY_VERSION) && ! defined?(Rubinius))) ||
+    (version == 'rbx' && defined?(Rubinius))
 end
 
 def in_ruby_version(*versions)
   yield if versions.any? { |v| ruby_version?(v) }
 end
 
+def not_in_ruby_version(*versions)
+  yield unless versions.any? { |v| ruby_version?(v) }
+end
+
 # Standard, generic replacement value.
 # If value19 is given, it is used inplace of value for Ruby 1.9.
 def __(value="FILL ME IN", value19=:mu)
@@ -52,7 +57,7 @@ class Object
     end
   end
 
-  in_ruby_version("1.9") do
+  in_ruby_version("1.9", "rbx") do
     public :method_missing
   end
 end