Skip to content

Instantly share code, notes, and snippets.

@aellispierce
Created March 3, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aellispierce/ba024d7573bbba5e8f41 to your computer and use it in GitHub Desktop.
Save aellispierce/ba024d7573bbba5e8f41 to your computer and use it in GitHub Desktop.
Composition Challenge
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(array)
@array = []
array.each do |num|
@array << num if num.odd?
end
end
def to_a
@array.to_a
end
def add(i)
@array << i if i.odd?
end
end
class CompositionChallenge < MiniTest::Test
def test_class_exists
assert OddArray
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