mirror of
https://github.com/edgecase/ruby_koans.git
synced 2026-04-15 07:23:19 -04:00
Added src directory
This commit is contained in:
63
src/about_modules.rb
Normal file
63
src/about_modules.rb
Normal file
@@ -0,0 +1,63 @@
|
||||
require 'edgecase'
|
||||
|
||||
class AboutModules < EdgeCase::Koan
|
||||
module Nameable
|
||||
def set_name(new_name)
|
||||
@name = new_name
|
||||
end
|
||||
|
||||
def here
|
||||
:in_module
|
||||
end
|
||||
end
|
||||
|
||||
def test_cant_instantiate_modules
|
||||
assert_raise(___(NoMethodError)) do
|
||||
Nameable.new
|
||||
end
|
||||
end
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
class Dog
|
||||
include Nameable
|
||||
|
||||
attr_reader :name
|
||||
|
||||
def initialize
|
||||
@name = "Fido"
|
||||
end
|
||||
|
||||
def bark
|
||||
"WOOF"
|
||||
end
|
||||
|
||||
def here
|
||||
:in_object
|
||||
end
|
||||
end
|
||||
|
||||
def test_normal_methods_are_available_in_the_object
|
||||
fido = Dog.new
|
||||
assert_equal __("WOOF"), fido.bark
|
||||
end
|
||||
|
||||
def test_module_methods_are_also_availble_in_the_object
|
||||
fido = Dog.new
|
||||
assert_nothing_raised(Exception) do
|
||||
fido.set_name("Rover")
|
||||
end
|
||||
end
|
||||
|
||||
def test_module_methods_can_affect_instance_variables_in_the_object
|
||||
fido = Dog.new
|
||||
assert_equal __("Fido"), fido.name
|
||||
fido.set_name("Rover")
|
||||
assert_equal __("Rover"), fido.name
|
||||
end
|
||||
|
||||
def test_classes_can_override_module_methods
|
||||
fido = Dog.new
|
||||
assert_equal __(:in_object), fido.here
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user