Skip to content

Instantly share code, notes, and snippets.

@TylerRockwell
Created September 22, 2015 13:59
Show Gist options
  • Save TylerRockwell/6d5e13bc29abc3935900 to your computer and use it in GitHub Desktop.
Save TylerRockwell/6d5e13bc29abc3935900 to your computer and use it in GitHub Desktop.
Composition Challenge 9-22-15
require 'minitest/autorun'
require 'minitest/pride'
# Write a class which wraps around an array, but only allows odd numbers
# to be stored in the array.
class OddArray
def initialize(numbers)
@array = numbers.select{|num| num % 2 == 1}
end
def to_a
@array
end
def add(x)
@array << x if x % 2 == 1
end
end
class CompositionChallenge < MiniTest::Test
def test_class_exists
assert OddArray
refute OddArray.superclass == Array
end
def test_initializer_takes_array_parameter
assert OddArray.new([1, 3, 5])
end
def test_to_a
odd_array = OddArray.new([1, 3, 5])
assert_equal [1, 3, 5], odd_array.to_a
end
def test_add_number
odd_array = OddArray.new([1, 3, 5])
odd_array.add(7)
assert_equal [1, 3, 5, 7], odd_array.to_a
end
def test_initialize_with_evens
odd_array = OddArray.new([1, 2, 3, 4, 5])
assert_equal [1, 3, 5], odd_array.to_a
end
def test_add_evens
odd_array = OddArray.new([1, 3, 5])
odd_array.add(2)
assert_equal [1, 3, 5], odd_array.to_a
end
def test_add_negatives
odd_array = OddArray.new([-1, -2, 3, 4, -5])
odd_array.add(-4)
assert_equal [-1, 3, -5], odd_array.to_a
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment