Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. # business logic file
  2. module DataStructure
  3. class Array
  4. def initialize(array)
  5. @array = array
  6. end
  7.  
  8. def flatten
  9. _flatten @array
  10. end
  11.  
  12. def flatten!
  13. @array = _flatten @array
  14. end
  15.  
  16. def to_s
  17. @array.to_s
  18. end
  19.  
  20. def inspect
  21. @array.inspect
  22. end
  23.  
  24. private
  25.  
  26. def _flatten(array, flatten_array = [])
  27. array.each do |element|
  28. if element.kind_of?(::Array)
  29. _flatten element, flatten_array
  30. else
  31. flatten_array.push element
  32. end
  33. end
  34.  
  35. flatten_array
  36. end
  37. end
  38. end
  39.  
  40. # test file
  41. require 'test/unit'
  42.  
  43. module DataStructure
  44. class ArrayTest < Test::Unit::TestCase
  45. def test_should_flat_the_input_array
  46. data_provider.each do |test_data|
  47. assert_equal (DataStructure::Array.new(test_data[:input])).flatten, test_data[:output]
  48. end
  49. end
  50.  
  51. def data_provider
  52. [
  53. {
  54. input: [],
  55. output: []
  56. },
  57. {
  58. input: [1,2,3],
  59. output: [1,2,3]
  60. },
  61. {
  62. input: [1,[2,3]],
  63. output: [1,2,3]
  64. },
  65. {
  66. input: [[1,2,[3]],4],
  67. output: [1,2,3,4]
  68. },
  69. {
  70. input: [[1,2,[3,[4,5,6]]],7],
  71. output: [1,2,3,4,5,6,7]
  72. }
  73. ]
  74. end
  75. end
  76. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement