|
require 'minitest/autorun' |
|
require 'minitest/pride' |
|
require './lib/flatten' |
|
|
|
class FlattenTest < Minitest::Test |
|
attr_reader :output |
|
|
|
def setup |
|
@output = RubyFlatten.start([1,[2,[3,[4,5]]],6,[7,8]]) |
|
end |
|
|
|
def test_will_not_accept_string |
|
assert_raises("Input not an array") {RubyFlatten.start("Bad Input")} |
|
end |
|
|
|
def test_will_not_accept_hash |
|
assert_raises("Input not an array") {RubyFlatten.start({"Bad Input": true})} |
|
end |
|
|
|
def test_will_not_accept_lone_integer |
|
assert_raises("Input not an array") {RubyFlatten.start(1)} |
|
end |
|
|
|
def test_will_not_accept_lone_float |
|
assert_raises("Input not an array") {RubyFlatten.start(1.23)} |
|
end |
|
|
|
def test_accepts_negative_integers |
|
expected = [1,-2,3,4,-5,6,7,8] |
|
output = RubyFlatten.start([1,[-2,[3,[4,-5]]],6,[7,8]]) |
|
assert_equal expected, output |
|
end |
|
|
|
def test_output_not_nil |
|
expected = output.nil? |
|
assert_equal false, expected |
|
end |
|
|
|
def test_output_not_empty |
|
expected = output.empty? |
|
assert_equal false, expected |
|
end |
|
|
|
def test_output_is_an_array |
|
expected = output.class |
|
assert_equal Array, expected |
|
end |
|
|
|
def test_each_index_is_an_integer |
|
output.each do |index| |
|
output_class = index.class |
|
assert_equal Integer, output_class |
|
end |
|
end |
|
|
|
def test_output_count |
|
count = output.count |
|
assert_equal 8, count |
|
assert_equal false, output.count == 3 |
|
end |
|
|
|
def test_output_is_correct |
|
expected = [1,2,3,4,5,6,7,8] |
|
assert_equal expected, output |
|
end |
|
|
|
def test_output_is_not_random |
|
assert_equal false, output == [8,7,3,4,1,2,6,5] |
|
end |
|
end |