+++ /dev/null
-require File.expand_path(File.dirname(__FILE__) + '/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(___) 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 __, fido.bark
- end
-
- def test_module_methods_are_also_available_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.name
- fido.set_name("Rover")
- assert_equal __, fido.name
- end
-
- def test_classes_can_override_module_methods
- fido = Dog.new
- assert_equal __, fido.here
- end
-end