3. sample
class InMemoryDirectory
def initialize
@elements = []
end
def add_element(new_element)
@elements << new_element
end
def generate_index
index = Element.new("index")
@elements.each{|e| index.add_text(e.name + "n") }
@elements << index
end
def element_count
@elements.length
end
def element(name)
@elements.find{|e| e.name == name }
end
end
9. def generate_index
index = Element.new("index")
@elements.each{|e| index.add_text(e.name + "n") }
@elements << index
end
• @elements
• element_count
• element
10. class Element
attr_reader :name, :text
def initialize(name)
@name = name
@text = ""
end
def add_text(new_text)
@text += new_text
end
end
• add_text elements
14. class InMemoryDirectory
def initialize
@elements = []
end
def add_element(new_element)
if @elements.empty?
@elements << Element.new("index")
end
@elements << new_element
element("index").add_text(new_element.name + "n")
end
def element_count
@elements.length
end
def element(name)
@elements.find{|e| e.name == name }
end
end
15. $ ruby in_memory_directory_test.rb
Loaded suite in_memory_directory_test
Started
.F
Finished in 0.015029 seconds.
1) Failure:
test_element_count(InMemoryDirectoryTest)
[in_memory_directory_test.rb:12]:
<1> expected but was
<2>.
2 tests, 2 assertions, 1 failures, 0 errors
17. require 'test/unit'
require 'in_memory_directory'
class InMemoryDirectoryTest < Test::Unit::TestCase
def setup
@dir = InMemoryDirectory.new
@hoge_object = Element.new("hoge")
@dir.add_element(@hoge_object)
@dir.generate_index
end generate_index
def test_element_count
assert_equal(2, @dir.element_count)
end
def test_element
assert_equal(@hoge_object, @dir.element("hoge"))
end
end
18. class InMemoryDirectory
def initialize
@elements = []
end
def add_element(new_element)
if @elements.empty?
@elements << Element.new("index")
end
@elements << new_element
element("index").add_text(new_element.name + "n")
end
def generate_index
puts "WARNING: generate_index deplicated"
end
def element_count
@elements.length
end
def element(name)
@elements.find{|e| e.name == name }
end
end