Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. require 'test/unit'
  2.  
  3. class MyHash
  4. def initialize
  5. @array = []
  6. end
  7.  
  8. def []=(key, value)
  9. object = @array.find do |key_value_pair|
  10. key_value_pair.first == key
  11. end
  12.  
  13. if object
  14. object[1] = value
  15. else
  16. @array.push([key, value])
  17. end
  18.  
  19. value
  20. end
  21.  
  22. def [](key)
  23. object = find_object(key)
  24.  
  25. if object
  26. object.last
  27. else
  28. nil
  29. end
  30. end
  31.  
  32. private
  33.  
  34. def find_object(key)
  35. @array.find do |pair|
  36. pair.first == key
  37. end
  38. end
  39. end
  40.  
  41.  
  42.  
  43. class TestMyHash < Test::Unit::TestCase
  44. def setup
  45. @hash = MyHash.new
  46. @hash.instance_variable_set(:@array, [['k_1', 'v_1'], ['k_2', 'v_2']])
  47. end
  48.  
  49. def test_set_update_internal_array
  50. @hash['k_3'] = 'v_3'
  51. assert_equal( @hash.instance_variable_get(:@array), [['k_1', 'v_1'], ["k_2", 'v_2'], ["k_3", 'v_3']])
  52. end
  53.  
  54. def test_set_return_correct_value
  55. assert_equal( @hash['k_3'] = 'v_3', 'v_3')
  56. end
  57.  
  58. def test_get_return_correct_value
  59. assert_equal( @hash['k_1'], 'v_1')
  60. assert_equal( @hash['k_2'], 'v_2')
  61. end
  62.  
  63. def test_get_of_null_key
  64. assert_nil( @hash['non_exist_key'] )
  65. end
  66.  
  67. def test_set_respecify_value
  68. assert_equal( @hash['k_1'], 'v_1')
  69. @hash['k_1'] = 'v_2'
  70. assert_equal( @hash['k_1'], 'v_2')
  71. end
  72. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement