From e629343d220d58abdde0929b4dda25bad16a43ca Mon Sep 17 00:00:00 2001 From: Tommy Schaefer Date: Wed, 27 Jul 2016 21:03:44 -0500 Subject: [PATCH] Re-generate binary tests with split assertions * Regenerate tests from latest exercism/x-common#305 revision * Remove compound assertion logic from BinaryCases since all tests with multiple assertions have been split into separate tests. * Use JSON null to indicate invalid input --- exercises/binary/binary_test.rb | 34 +++++++++++++++++------ lib/binary_cases.rb | 49 ++++++++------------------------- 2 files changed, 36 insertions(+), 47 deletions(-) diff --git a/exercises/binary/binary_test.rb b/exercises/binary/binary_test.rb index fd0158245b..3aee171d82 100755 --- a/exercises/binary/binary_test.rb +++ b/exercises/binary/binary_test.rb @@ -5,7 +5,7 @@ require_relative 'binary' # Test data version: -# dd43e66 +# 01092b0 class BinaryTest < Minitest::Test def test_binary_0_is_decimal_0 # skip @@ -52,18 +52,34 @@ def test_binary_ignores_leading_zeros assert_equal 31, Binary.new('000011111').to_decimal end - def test_numbers_other_than_one_and_zero_raise_an_error + def test_2_is_not_a_valid_binary_digit skip - %w(012 2).each do |input| - assert_raises(ArgumentError) { Binary.new(input) } - end + assert_raises(ArgumentError) { Binary.new('2') } end - def test_containing_letters_raises_an_error + def test_a_number_containing_a_non_binary_digit_is_invalid skip - %w(10nope nope10 10nope10 001\ nope).each do |input| - assert_raises(ArgumentError) { Binary.new(input) } - end + assert_raises(ArgumentError) { Binary.new('01201') } + end + + def test_a_number_with_trailing_non_binary_characters_is_invalid + skip + assert_raises(ArgumentError) { Binary.new('10nope') } + end + + def test_a_number_with_leading_non_binary_characters_is_invalid + skip + assert_raises(ArgumentError) { Binary.new('nope10') } + end + + def test_a_number_with_internal_non_binary_characters_is_invalid + skip + assert_raises(ArgumentError) { Binary.new('10nope10') } + end + + def test_a_number_and_a_word_whitespace_spearated_is_invalid + skip + assert_raises(ArgumentError) { Binary.new('001 nope') } end # Problems in exercism evolve over time, as we find better ways to ask diff --git a/lib/binary_cases.rb b/lib/binary_cases.rb index bf3fa5e374..047ed65597 100644 --- a/lib/binary_cases.rb +++ b/lib/binary_cases.rb @@ -4,8 +4,8 @@ def name end def assertion - return compound_assertion if multiple_assertions? - Assertion.new("'#{binary}'", expected).to_s + return error_assertion if raises_error? + equality_assertion end def skipped @@ -14,47 +14,20 @@ def skipped private - def multiple_assertions? - binary.is_a?(Array) + def error_assertion + "assert_raises(ArgumentError) { #{work_load} }" end - def compound_assertion - inputs = binary.map { |e| e.gsub(' ', '\ ') }.join(' ') - %(%w(#{inputs}).each do |input| - #{Assertion.new('input', expected)} - end) + def equality_assertion + "assert_equal #{expected}, #{work_load}" end - class Assertion - def initialize(initialization_value, expected) - @initialization_value = initialization_value - @expected = expected - end - - def to_s - return error_assertion if raises_error? - equality_assertion - end - - private - - attr_reader :initialization_value, :expected - - def error_assertion - "assert_raises(ArgumentError) { #{work_load} }" - end - - def equality_assertion - "assert_equal #{expected}, #{work_load}" - end - - def work_load - "Binary.new(#{initialization_value})#{'.to_decimal' unless raises_error?}" - end + def work_load + "Binary.new('#{binary}')#{'.to_decimal' unless raises_error?}" + end - def raises_error? - expected.to_i == -1 - end + def raises_error? + expected.nil? end end