That's a homebrewed flatten array method.
Run ruby flatten_spec.rb
to make sure everything is working.
I used ministest since that's a simple test and minitest is a built in lib.
def flatten(array) | |
new_array = [] | |
array.each do |element| | |
if element.kind_of?(Array) | |
new_array += flatten(element) | |
else | |
new_array << element | |
end | |
end | |
new_array | |
end |
require 'minitest/autorun' | |
require ('./flatten.rb') | |
describe "Flatten" do | |
before do | |
@simple_array = [1,2,3] | |
@multiples_array = [[1,2,[3]],4] | |
@complex_array = [1,2,[3,[4,5,[6,[7,[8, 9, 10, 11, [[], [12], [13], [[], [14]]]]]]]]] | |
end | |
describe "#flatten" do | |
it "returns the passed array if is a simple array" do | |
flatten_array = flatten(@simple_array) | |
flatten_array.must_equal [1,2,3] | |
end | |
it "flattens an array recursively when array has array elements" do | |
flatten_array = flatten(@multiples_array) | |
flatten_array.must_equal [1,2,3,4] | |
end | |
it "flattens an array recursively on a complex array element" do | |
flatten_array = flatten(@complex_array) | |
flatten_array.must_equal [1,2,3,4,5,6,7,8,9,10,11,12,13,14] | |
end | |
end | |
end |