Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'test/unit'
- class MyHash
- def initialize
- @array = []
- end
- def []=(key, value)
- object = @array.find do |key_value_pair|
- key_value_pair.first == key
- end
- if object
- object[1] = value
- else
- @array.push([key, value])
- end
- value
- end
- def [](key)
- object = find_object(key)
- if object
- object.last
- else
- nil
- end
- end
- private
- def find_object(key)
- @array.find do |pair|
- pair.first == key
- end
- end
- end
- class TestMyHash < Test::Unit::TestCase
- def setup
- @hash = MyHash.new
- @hash.instance_variable_set(:@array, [['k_1', 'v_1'], ['k_2', 'v_2']])
- end
- def test_set_update_internal_array
- @hash['k_3'] = 'v_3'
- assert_equal( @hash.instance_variable_get(:@array), [['k_1', 'v_1'], ["k_2", 'v_2'], ["k_3", 'v_3']])
- end
- def test_set_return_correct_value
- assert_equal( @hash['k_3'] = 'v_3', 'v_3')
- end
- def test_get_return_correct_value
- assert_equal( @hash['k_1'], 'v_1')
- assert_equal( @hash['k_2'], 'v_2')
- end
- def test_get_of_null_key
- assert_nil( @hash['non_exist_key'] )
- end
- def test_set_respecify_value
- assert_equal( @hash['k_1'], 'v_1')
- @hash['k_1'] = 'v_2'
- assert_equal( @hash['k_1'], 'v_2')
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement