Guest User

Untitled

a guest
May 27th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. schmidt@obrien ~/Projekte/github/code_reading/facets$ cat hash_zipnew.rb
  2. #!/usr/bin/ruby -wKU
  3. #
  4. # Code Reading #2
  5. require '../base'
  6. require "facets/hash/zipnew"
  7.  
  8. # Alternative implementation
  9. class Hash
  10. def self.alt_zipnew(keys, values)
  11. h = {}
  12. keys.each_with_index {|key, index| h[ key ] = values[ index ] }
  13. h
  14. end
  15.  
  16. def self.alt_zipnew_from_felix(keys, values)
  17. Hash[*[keys, values].transpose.flatten(1)]
  18. end
  19. end
  20.  
  21.  
  22. class HashZipnew
  23. def data
  24. keys = [
  25. '2010-05-15',
  26. '2010-05-16',
  27. '2010-05-17',
  28. '2010-05-18',
  29. '2010-05-19',
  30. 'nested_array'
  31. ]
  32. values = [
  33. 100.0,
  34. 450.5,
  35. 89.0,
  36. 0.0,
  37. 78.5,
  38. [1, 2, 3]
  39. ]
  40. Hash.zipnew(keys, values)
  41. end
  42.  
  43. def alternative_implementation
  44. keys = [
  45. '2010-05-15',
  46. '2010-05-16',
  47. '2010-05-17',
  48. '2010-05-18',
  49. '2010-05-19',
  50. 'nested_array'
  51. ]
  52. values = [
  53. 100.0,
  54. 450.5,
  55. 89.0,
  56. 0.0,
  57. 78.5,
  58. [1, 2, 3]
  59. ]
  60. Hash.alt_zipnew(keys, values)
  61. end
  62.  
  63. def alternative_implementation_from_felix
  64. keys = [
  65. '2010-05-15',
  66. '2010-05-16',
  67. '2010-05-17',
  68. '2010-05-18',
  69. '2010-05-19',
  70. 'nested_array'
  71. ]
  72. values = [
  73. 100.0,
  74. 450.5,
  75. 89.0,
  76. 0.0,
  77. 78.5,
  78. [1, 2, 3]
  79. ]
  80. Hash.alt_zipnew_from_felix(keys, values)
  81. end
  82. end
  83.  
  84. ap(HashZipnew.new.data)
  85. ap(HashZipnew.new.alternative_implementation)
  86. ap(HashZipnew.new.alternative_implementation_from_felix)
  87.  
  88. class HashZipnewTest < Test::Unit::TestCase
  89. def test_use_the_arrays_to_map_keys_to_values
  90. hashish = HashZipnew.new.data
  91.  
  92. assert_equal 6, hashish.size
  93. assert_equal 100.0, hashish['2010-05-15']
  94. assert_equal 450.5, hashish['2010-05-16']
  95. assert_equal 89.0, hashish['2010-05-17']
  96. assert_equal 0.0, hashish['2010-05-18']
  97. assert_equal 78.5, hashish['2010-05-19']
  98. assert_equal [1, 2, 3], hashish['nested_array']
  99. end
  100.  
  101. def test_alternative_implementation
  102. hashish = HashZipnew.new.alternative_implementation
  103.  
  104. assert_equal 6, hashish.size
  105. assert_equal 100.0, hashish['2010-05-15']
  106. assert_equal 450.5, hashish['2010-05-16']
  107. assert_equal 89.0, hashish['2010-05-17']
  108. assert_equal 0.0, hashish['2010-05-18']
  109. assert_equal 78.5, hashish['2010-05-19']
  110. assert_equal [1, 2, 3], hashish['nested_array']
  111. end
  112.  
  113. def test_alternative_implementation_from_felix
  114. hashish = HashZipnew.new.alternative_implementation_from_felix
  115.  
  116. assert_equal 6, hashish.size
  117. assert_equal 100.0, hashish['2010-05-15']
  118. assert_equal 450.5, hashish['2010-05-16']
  119. assert_equal 89.0, hashish['2010-05-17']
  120. assert_equal 0.0, hashish['2010-05-18']
  121. assert_equal 78.5, hashish['2010-05-19']
  122. assert_equal [1, 2, 3], hashish['nested_array']
  123. end
  124. end
Add Comment
Please, Sign In to add comment