UPdated koans to match latest source.

This commit is contained in:
Jim Weirich
2010-08-16 15:06:12 -04:00
parent 7046294343
commit 8ef93f1d3a
29 changed files with 78 additions and 57 deletions

View File

@@ -7,6 +7,6 @@ require 'rake/testtask'
task :default => :test task :default => :test
task :test do task :test do
ruby 'path_to_enlightenment.rb' ruby '-I.', 'path_to_enlightenment.rb'
end end

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutArrayAssignment < EdgeCase::Koan class AboutArrayAssignment < EdgeCase::Koan
def test_non_parallel_assignment def test_non_parallel_assignment

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutArrays < EdgeCase::Koan class AboutArrays < EdgeCase::Koan
def test_creating_arrays def test_creating_arrays

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
# -*- ruby -*- # -*- ruby -*-
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutAsserts < EdgeCase::Koan class AboutAsserts < EdgeCase::Koan

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutBlocks < EdgeCase::Koan class AboutBlocks < EdgeCase::Koan
def method_with_block def method_with_block

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutClassMethods < EdgeCase::Koan class AboutClassMethods < EdgeCase::Koan
class Dog class Dog

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutClasses < EdgeCase::Koan class AboutClasses < EdgeCase::Koan
class Dog class Dog
@@ -43,7 +43,7 @@ class AboutClasses < EdgeCase::Koan
fido = Dog2.new fido = Dog2.new
fido.set_name("Fido") fido.set_name("Fido")
assert_equal __, fido.instance_variable_get("@name") assert_equal __, fido.instance_variable_get("@name")
end end
def test_you_can_rip_the_value_out_using_instance_eval def test_you_can_rip_the_value_out_using_instance_eval
@@ -89,7 +89,7 @@ class AboutClasses < EdgeCase::Koan
assert_equal __, fido.name assert_equal __, fido.name
end end
# ------------------------------------------------------------------ # ------------------------------------------------------------------
class Dog5 class Dog5
@@ -125,7 +125,7 @@ class AboutClasses < EdgeCase::Koan
# THINK ABOUT IT: # THINK ABOUT IT:
# Why is this so? # Why is this so?
end end
def test_different_objects_have_difference_instance_variables def test_different_objects_have_difference_instance_variables
fido = Dog6.new("Fido") fido = Dog6.new("Fido")
rover = Dog6.new("Rover") rover = Dog6.new("Rover")
@@ -186,5 +186,5 @@ class AboutClasses < EdgeCase::Koan
assert_equal __, "STRING".to_s assert_equal __, "STRING".to_s
assert_equal __, "STRING".inspect assert_equal __, "STRING".inspect
end end
end end

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
C = "top level" C = "top level"
@@ -20,7 +20,7 @@ class AboutConstants < EdgeCase::Koan
end end
# ------------------------------------------------------------------ # ------------------------------------------------------------------
class Animal class Animal
LEGS = 4 LEGS = 4
def legs_in_animal def legs_in_animal
@@ -33,25 +33,25 @@ class AboutConstants < EdgeCase::Koan
end end
end end
end end
def test_nested_classes_inherit_constants_from_enclosing_classes def test_nested_classes_inherit_constants_from_enclosing_classes
assert_equal __, Animal::NestedAnimal.new.legs_in_nested_animal assert_equal __, Animal::NestedAnimal.new.legs_in_nested_animal
end end
# ------------------------------------------------------------------ # ------------------------------------------------------------------
class Reptile < Animal class Reptile < Animal
def legs_in_reptile def legs_in_reptile
LEGS LEGS
end end
end end
def test_subclasses_inherit_constants_from_parent_classes def test_subclasses_inherit_constants_from_parent_classes
assert_equal __, Reptile.new.legs_in_reptile assert_equal __, Reptile.new.legs_in_reptile
end end
# ------------------------------------------------------------------ # ------------------------------------------------------------------
class MyAnimals class MyAnimals
LEGS = 2 LEGS = 2
@@ -61,16 +61,16 @@ class AboutConstants < EdgeCase::Koan
end end
end end
end end
def test_who_wins_with_both_nested_and_inherited_constants def test_who_wins_with_both_nested_and_inherited_constants
assert_equal __, MyAnimals::Bird.new.legs_in_bird assert_equal __, MyAnimals::Bird.new.legs_in_bird
end end
# QUESTION: Which has precedence: The constant in the lexical scope, # QUESTION: Which has precedence: The constant in the lexical scope,
# or the constant from the inheritance heirarachy? # or the constant from the inheritance heirarachy?
# ------------------------------------------------------------------ # ------------------------------------------------------------------
class MyAnimals::Oyster < Animal class MyAnimals::Oyster < Animal
def legs_in_oyster def legs_in_oyster
LEGS LEGS
@@ -83,5 +83,5 @@ class AboutConstants < EdgeCase::Koan
# QUESTION: Now Which has precedence: The constant in the lexical # QUESTION: Now Which has precedence: The constant in the lexical
# scope, or the constant from the inheritance heirarachy? Why is it # scope, or the constant from the inheritance heirarachy? Why is it
# different? # different than the previous answer?
end end

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutControlStatements < EdgeCase::Koan class AboutControlStatements < EdgeCase::Koan

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class DiceSet class DiceSet
attr_reader :values attr_reader :values

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutExceptions < EdgeCase::Koan class AboutExceptions < EdgeCase::Koan

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutHashes < EdgeCase::Koan class AboutHashes < EdgeCase::Koan
def test_creating_hashes def test_creating_hashes

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutInheritance < EdgeCase::Koan class AboutInheritance < EdgeCase::Koan
class Dog class Dog

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutIteration < EdgeCase::Koan class AboutIteration < EdgeCase::Koan

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutMessagePassing < EdgeCase::Koan class AboutMessagePassing < EdgeCase::Koan

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
def my_global_method(a,b) def my_global_method(a,b)
a + b a + b

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutModules < EdgeCase::Koan class AboutModules < EdgeCase::Koan
module Nameable module Nameable

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutNil < EdgeCase::Koan class AboutNil < EdgeCase::Koan
def test_nil_is_an_object def test_nil_is_an_object

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutOpenClasses < EdgeCase::Koan class AboutOpenClasses < EdgeCase::Koan
class Dog class Dog

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
# Project: Create a Proxy Class # Project: Create a Proxy Class
# #

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutUsingBlocks < EdgeCase::Koan class AboutUsingBlocks < EdgeCase::Koan

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutScope < EdgeCase::Koan class AboutScope < EdgeCase::Koan
module Jims module Jims
@@ -28,7 +28,7 @@ class AboutScope < EdgeCase::Koan
rover = Joes::Dog.new rover = Joes::Dog.new
assert_equal __, fido.identify assert_equal __, fido.identify
assert_equal __, rover.identify assert_equal __, rover.identify
assert_not_equal fido.class, rover.class assert_not_equal fido.class, rover.class
assert_not_equal Jims::Dog, Joes::Dog assert_not_equal Jims::Dog, Joes::Dog
end end
@@ -41,7 +41,7 @@ class AboutScope < EdgeCase::Koan
def test_bare_bones_class_names_assume_the_current_scope def test_bare_bones_class_names_assume_the_current_scope
assert_equal __, AboutScope::String == String assert_equal __, AboutScope::String == String
end end
def test_nested_string_is_not_the_same_as_the_system_string def test_nested_string_is_not_the_same_as_the_system_string
assert_equal __, String == "HI".class assert_equal __, String == "HI".class
end end

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
# Greed is a dice game where you roll up to five dice to accumulate # Greed is a dice game where you roll up to five dice to accumulate
# points. The following "score" function will be used calculate the # points. The following "score" function will be used calculate the

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutStrings < EdgeCase::Koan class AboutStrings < EdgeCase::Koan
def test_double_quoted_strings_are_strings def test_double_quoted_strings_are_strings
@@ -146,11 +146,20 @@ EOS
# Surprised? # Surprised?
end end
def test_single_characters_are_represented_by_integers in_ruby_version("1.8") do
assert_equal __, ?a def test_in_ruby_1_8_single_characters_are_represented_by_integers
assert_equal __, ?a == 97 assert_equal __, ?a
assert_equal __, ?a == 97
assert_equal __, ?b == (?a + 1) assert_equal __, ?b == (?a + 1)
end
end
in_ruby_version("1.9") do
def test_in_ruby_1_8_single_characters_are_represented_by_strings
assert_equal __, ?a
assert_equal __, ?a == 97
end
end end
def test_strings_can_be_split def test_strings_can_be_split
@@ -166,7 +175,7 @@ EOS
# NOTE: Patterns are formed from Regular Expressions. Ruby has a # NOTE: Patterns are formed from Regular Expressions. Ruby has a
# very powerful Regular Expression library. Unfortunately, time # very powerful Regular Expression library. Unfortunately, time
# does not permit us to explore it in detail in Ruby 101. # does not permit us to explore it in detail now.
end end
def test_strings_can_be_joined def test_strings_can_be_joined

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
# You need to write the triangle method in the file 'triangle.rb' # You need to write the triangle method in the file 'triangle.rb'
require 'triangle.rb' require 'triangle.rb'

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
# You need to write the triangle method in the file 'triangle.rb' # You need to write the triangle method in the file 'triangle.rb'
require 'triangle.rb' require 'triangle.rb'

View File

@@ -1,4 +1,4 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class AboutTrueAndFalse < EdgeCase::Koan class AboutTrueAndFalse < EdgeCase::Koan
def truth_value(condition) def truth_value(condition)

View File

@@ -1 +1 @@
require 'edgecase' require File.expand_path(File.dirname(__FILE__) + '/edgecase')

View File

@@ -6,12 +6,24 @@ require 'test/unit/assertions'
class FillMeInError < StandardError class FillMeInError < StandardError
end end
def __(value="FILL ME IN") def in_ruby_version(version)
value yield if RUBY_VERSION =~ /^#{version}/
end end
def _n_(value=999999) def __(value="FILL ME IN", value19=:mu)
value if RUBY_VERSION < "1.9"
value
else
(value19 == :mu) ? value : value19
end
end
def _n_(value=999999, value19=:mu)
if RUBY_VERSION < "1.9"
value
else
(value19 == :mu) ? value : value19
end
end end
def ___(value=FillMeInError) def ___(value=FillMeInError)
@@ -104,7 +116,7 @@ module EdgeCase
end end
end end
end end
end end
class Koan class Koan
include Test::Unit::Assertions include Test::Unit::Assertions
@@ -181,7 +193,7 @@ module EdgeCase
load(arg) load(arg)
else else
fail "Unknown command line argument '#{arg}'" fail "Unknown command line argument '#{arg}'"
end end
end end
end end
end end