Fix some typos.
[ruby_koans.git] / koans / about_modules.rb
1 require File.expand_path(File.dirname(__FILE__) + '/edgecase')
2
3 class AboutModules < EdgeCase::Koan
4   module Nameable
5     def set_name(new_name)
6       @name = new_name
7     end
8
9     def here
10       :in_module
11     end
12   end
13
14   def test_cant_instantiate_modules
15     assert_raise(___) do
16       Nameable.new
17     end
18   end
19
20   # ------------------------------------------------------------------
21
22   class Dog
23     include Nameable
24
25     attr_reader :name
26
27     def initialize
28       @name = "Fido"
29     end
30
31     def bark
32       "WOOF"
33     end
34
35     def here
36       :in_object
37     end
38   end
39
40   def test_normal_methods_are_available_in_the_object
41     fido = Dog.new
42     assert_equal __, fido.bark
43   end
44
45   def test_module_methods_are_also_available_in_the_object
46     fido = Dog.new
47     assert_nothing_raised(Exception) do
48       fido.set_name("Rover")
49     end
50   end
51
52   def test_module_methods_can_affect_instance_variables_in_the_object
53     fido = Dog.new
54     assert_equal __, fido.name
55     fido.set_name("Rover")
56     assert_equal __, fido.name
57   end
58
59   def test_classes_can_override_module_methods
60     fido = Dog.new
61     assert_equal __, fido.here
62   end
63 end