1 require File.expand_path(File.dirname(__FILE__) + '/edgecase')
3 class AboutClasses < EdgeCase::Koan
7 def test_instances_of_classes_can_be_created_with_new
9 assert_equal __, fido.class
12 # ------------------------------------------------------------------
20 def test_instance_variables_can_be_set_by_assigning_to_them
22 assert_equal __, fido.instance_variables
25 assert_equal __, fido.instance_variables
28 def test_instance_variables_cannot_be_accessed_outside_the_class
38 # NOTE: Using eval because the above line is a syntax error.
42 def test_you_can_politely_ask_for_instance_variable_values
46 assert_equal __, fido.instance_variable_get("@name")
49 def test_you_can_rip_the_value_out_using_instance_eval
53 assert_equal __, fido.instance_eval("@name") # string version
54 assert_equal __, fido.instance_eval { @name } # block version
57 # ------------------------------------------------------------------
68 def test_you_can_create_accessor_methods_to_return_instance_variables
72 assert_equal __, fido.name
75 # ------------------------------------------------------------------
86 def test_attr_reader_will_automatically_define_an_accessor
90 assert_equal __, fido.name
93 # ------------------------------------------------------------------
100 def test_attr_accessor_will_automatically_define_both_read_and_write_accessors
104 assert_equal __, fido.name
107 # ------------------------------------------------------------------
111 def initialize(initial_name)
116 def test_initialize_provides_initial_values_for_instance_variables
117 fido = Dog6.new("Fido")
118 assert_equal __, fido.name
121 def test_args_to_new_must_match_initialize
129 def test_different_objects_have_different_instance_variables
130 fido = Dog6.new("Fido")
131 rover = Dog6.new("Rover")
133 assert_equal __, rover.name != fido.name
136 # ------------------------------------------------------------------
141 def initialize(initial_name)
154 "<Dog named '#{name}'>"
158 def test_inside_a_method_self_refers_to_the_containing_object
159 fido = Dog7.new("Fido")
161 fidos_self = fido.get_self
162 assert_equal __, fidos_self
165 def test_to_s_provides_a_string_version_of_the_object
166 fido = Dog7.new("Fido")
167 assert_equal __, fido.to_s
170 def test_to_s_is_used_in_string_interpolation
171 fido = Dog7.new("Fido")
172 assert_equal __, "My dog is #{fido}"
175 def test_inspect_provides_a_more_complete_string_version
176 fido = Dog7.new("Fido")
177 assert_equal __, fido.inspect
180 def test_all_objects_support_to_s_and_inspect
183 assert_equal __, array.to_s
184 assert_equal __, array.inspect
186 assert_equal __, "STRING".to_s
187 assert_equal __, "STRING".inspect