Skip to content

Instantly share code, notes, and snippets.

@rshea303
Created May 4, 2015 21:07
Show Gist options
  • Save rshea303/5e53eb97aea6944dabdd to your computer and use it in GitHub Desktop.
Save rshea303/5e53eb97aea6944dabdd to your computer and use it in GitHub Desktop.
Flatten w/test
class CustomArray
attr_reader :input, :result
def initialize(input)
@input = input
@result = []
end
def flatten(element=input)
element.each do |ele|
determine(ele)
end
result
end
def determine(ele)
if ele.is_a?(Array)
flatten(ele)
else
result << ele
end
end
end
require 'minitest'
require 'minitest/autorun'
require 'minitest/pride'
require_relative 'flatten'
class FlattenTest < Minitest::Test
def test_it_recognizes_input
@flatten = CustomArray.new([1,2,3])
assert_equal [1,2,3], @flatten.input
end
def test_it_flattens_a_flattened_array
@flatten = CustomArray.new([1,2,3])
assert_equal [1,2,3], @flatten.flatten
end
def test_it_flattens_a_simple_array
@flatten = CustomArray.new([[1,2],3])
assert_equal [1,2,3], @flatten.flatten
end
def test_it_flattens_a_complex_array
@flatten = CustomArray.new([[1,2],3,[[4,5,6],7]])
assert_equal [1,2,3,4,5,6,7], @flatten.flatten
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment