Fixed :each VS "each" conflict in method list inclusion.
authorJim Weirich <jim.weirich@gmail.com>
Sun, 4 Dec 2011 05:57:08 +0000 (00:57 -0500)
committerJim Weirich <jim.weirich@gmail.com>
Sun, 4 Dec 2011 05:57:08 +0000 (00:57 -0500)
src/about_iteration.rb

index 324a116..2e35aa9 100644 (file)
@@ -2,8 +2,29 @@ require File.expand_path(File.dirname(__FILE__) + '/edgecase')
 
 class AboutIteration < EdgeCase::Koan
 
+  # -- An Aside ------------------------------------------------------
+  # Ruby 1.8 stores names as strings. Ruby 1.9 stores names as
+  # symbols. So we use a version dependent method "as_name" to convert
+  # to the right format in the koans.  We will use "as_name" whenever
+  # comparing to lists of methods.
+
+  in_ruby_version("1.8") do
+    def as_name(name)
+      name.to_s
+    end
+  end
+
+  in_ruby_version("1.9") do
+    def as_name(name)
+      name.to_sym
+    end
+  end
+
+  # Ok, now back to the Koans.
+  # -------------------------------------------------------------------
+
   def test_each_is_a_method_on_arrays
-    [].methods.include?("each")
+    assert_equal __(true), [].methods.include?(as_name(:each))
   end
 
   def test_iterating_with_each