+++ /dev/null
-Copyright (c) 2009 EdgeCase
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
= Other stuff
-Author :: Jim Weirich <jim@weirichhouse.org>
-Author :: Joe O'Brien <joe@edgecase.com>
+Author :: Jim Weirich <jim@weirichhouse.org>
+Author :: Joe O'Brien <joe@edgecase.com>
Issue Tracker :: http://www.pivotaltracker.com/projects/48111
Requires :: Ruby 1.8.x or later and Rake (any recent version)
+
+= License
+
+http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png
+
+RubyKoans is released under a Creative Commons,
+Attribution-NonCommercial-ShareAlike, Version 3.0
+(http://creativecommons.org/licenses/by-nc-sa/3.0/) License.
end
# QUESTION: Which has precedence: The constant in the lexical scope,
- # or the constant from the inheritance heirarachy?
+ # or the constant from the inheritance hierarchy?
# ------------------------------------------------------------------
assert_equal __, MyAnimals::Oyster.new.legs_in_oyster
end
- # QUESTION: Now Which has precedence: The constant in the lexical
- # scope, or the constant from the inheritance heirarachy? Why is it
+ # QUESTION: Now which has precedence: The constant in the lexical
+ # scope, or the constant from the inheritance hierarchy? Why is it
# different than the previous answer?
end
assert_equal __, Chihuahua.ancestors.include?(Object)
end
- def test_subcases_inherit_behavior_from_parent_class
+ def test_subclasses_inherit_behavior_from_parent_class
chico = Chihuahua.new("Chico")
assert_equal __, chico.name
end
class AboutIteration < EdgeCase::Koan
def test_each_is_a_method_on_arrays
- [].methods.include?("each")
+ assert_equal __, [].methods.include?(:each)
end
def test_iterating_with_each
result = [2, 3, 4].inject(0) { |sum, item| sum + item }
assert_equal __, result
- result2 = [2, 3, 4].inject(1) { |sum, item| sum * item }
+ result2 = [2, 3, 4].inject(1) { |product, item| product * item }
assert_equal __, result2
# Extra Credit:
# Concepts
# * Pull in a java class
# * calling a method, Camel vs snake
-# * Resovling module/class name conflicts
+# * Resolving module/class name conflicts
# * Showing what gets returned
# * Ruby Strings VS Java Strings
# * Calling custom java class
# keep in mind you can't call method_missing like that in Ruby
# 1.9. normally.
#
- # Thanks. We now return you to your regularly schedule Ruby
+ # Thanks. We now return you to your regularly scheduled Ruby
# Koans.
end
# below). You should be able to initialize the proxy object with any
# object. Any messages sent to the proxy object should be forwarded
# to the target object. As each message is sent, the proxy should
-# record the name of the method send.
+# record the name of the method sent.
#
# The proxy class is started for you. You will need to add a method
# missing handler and any other supporting methods. The specification
require File.expand_path(File.dirname(__FILE__) + '/edgecase')
# 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 to calculate the
# score of a single roll of the dice.
#
# A greed roll is scored as follows:
assert_equal __, string[7..9]
end
- def test_you_can_get_a_single_character_from_a_string
- string = "Bacon, lettuce and tomato"
- assert_equal __, string[1]
-
- # Surprised?
- end
-
in_ruby_version("1.8") do
def test_in_ruby_1_8_single_characters_are_represented_by_integers
assert_equal __, ?a
end
end
+in_ruby_version("1.8") do
+ def test_in_ruby_1_8_you_can_get_a_single_character_from_a_string
+ string = "Bacon, lettuce and tomato"
+ assert_equal __, string[1]
+
+ # Surprised?
+ end
+ end
+
+ in_ruby_version("1.9") do
+
+ def test_in_ruby_1_9_you_can_get_a_single_character_from_a_string
+ string = "Bacon, lettuce and tomato"
+ assert_equal "__", string[1]
+
+ # Surprised?
+ end
+ end
+
+
def test_strings_can_be_split
string = "Sausage Egg Cheese"
words = string.split
# interesting string operations are available on symbols.
def test_symbols_cannot_be_concatenated
- # Exceptions will be pondered further father down the path
+ # Exceptions will be pondered further farther down the path
assert_raise(___) do
:cats + :dogs
end
end
# Standard, generic replacement value.
-# If value19 is given, it is used inplace of value for Ruby 1.9.
+# If value19 is given, it is used in place of value for Ruby 1.9.
def __(value="FILL ME IN", value19=:mu)
if RUBY_VERSION < "1.9"
value
end
end
-desc "Run some simple consistancy checks"
+desc "Run some simple consistency checks"
task :check => ["check:abouts", "check:asserts"]
assert_equal __(true), Chihuahua.ancestors.include?(Object)
end
- def test_subcases_inherit_behavior_from_parent_class
+ def test_subclasses_inherit_behavior_from_parent_class
chico = Chihuahua.new("Chico")
assert_equal __("Chico"), chico.name
end
# Concepts
# * Pull in a java class
# * calling a method, Camel vs snake
-# * Resovling module/class name conflicts
+# * Resolving module/class name conflicts
# * Showing what gets returned
# * Ruby Strings VS Java Strings
# * Calling custom java class
# below). You should be able to initialize the proxy object with any
# object. Any messages sent to the proxy object should be forwarded
# to the target object. As each message is sent, the proxy should
-# record the name of the method send.
+# record the name of the method sent.
#
# The proxy class is started for you. You will need to add a method
# missing handler and any other supporting methods. The specification
require File.expand_path(File.dirname(__FILE__) + '/edgecase')
# 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 to calculate the
# score of a single roll of the dice.
#
# A greed roll is scored as follows:
end
# Standard, generic replacement value.
-# If value19 is given, it is used inplace of value for Ruby 1.9.
+# If value19 is given, it is used in place of value for Ruby 1.9.
def __(value="FILL ME IN", value19=:mu)
if RUBY_VERSION < "1.9"
value