From 307a3ff6d36aed9f05fb15f97360cc18cbf77ebe Mon Sep 17 00:00:00 2001 From: Alexander Delgado Date: Wed, 31 May 2017 12:11:13 -0700 Subject: [PATCH 1/2] Isogram Exercise improvements: change method name and add failure messages --- exercises/isogram/.meta/.version | 2 +- .../isogram/.meta/generator/isogram_case.rb | 12 ++++++++++- exercises/isogram/isogram_test.rb | 20 +++++++++---------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/exercises/isogram/.meta/.version b/exercises/isogram/.meta/.version index e440e5c842..b8626c4cff 100644 --- a/exercises/isogram/.meta/.version +++ b/exercises/isogram/.meta/.version @@ -1 +1 @@ -3 \ No newline at end of file +4 diff --git a/exercises/isogram/.meta/generator/isogram_case.rb b/exercises/isogram/.meta/generator/isogram_case.rb index 078852ae37..f07ebd29b6 100644 --- a/exercises/isogram/.meta/generator/isogram_case.rb +++ b/exercises/isogram/.meta/generator/isogram_case.rb @@ -6,9 +6,19 @@ def workload indent_lines( [ "string = #{input.inspect}", - "#{assert} Isogram.is_isogram?(string)" + "#{assert} Isogram.isogram?(string), #{failure_message}" ], 4 ) end + private + + def failure_message + %Q("Expected '#{expected}', '#{input}' #{type}") + end + + def type + "#{expected ? 'is' : 'is not'} an isogram" + end + end diff --git a/exercises/isogram/isogram_test.rb b/exercises/isogram/isogram_test.rb index 66f3f270b2..4442a17c30 100755 --- a/exercises/isogram/isogram_test.rb +++ b/exercises/isogram/isogram_test.rb @@ -7,55 +7,55 @@ class IsogramTest < Minitest::Test def test_empty_string # skip string = "" - assert Isogram.is_isogram?(string) + assert Isogram.isogram?(string), "Expected 'true', '' is an isogram" end def test_isogram_with_only_lower_case_characters skip string = "isogram" - assert Isogram.is_isogram?(string) + assert Isogram.isogram?(string), "Expected 'true', 'isogram' is an isogram" end def test_word_with_one_duplicated_character skip string = "eleven" - refute Isogram.is_isogram?(string) + refute Isogram.isogram?(string), "Expected 'false', 'eleven' is not an isogram" end def test_longest_reported_english_isogram skip string = "subdermatoglyphic" - assert Isogram.is_isogram?(string) + assert Isogram.isogram?(string), "Expected 'true', 'subdermatoglyphic' is an isogram" end def test_word_with_duplicated_character_in_mixed_case skip string = "Alphabet" - refute Isogram.is_isogram?(string) + refute Isogram.isogram?(string), "Expected 'false', 'Alphabet' is not an isogram" end def test_hypothetical_isogrammic_word_with_hyphen skip string = "thumbscrew-japingly" - assert Isogram.is_isogram?(string) + assert Isogram.isogram?(string), "Expected 'true', 'thumbscrew-japingly' is an isogram" end def test_isogram_with_duplicated_non_letter_character skip string = "Hjelmqvist-Gryb-Zock-Pfund-Wax" - assert Isogram.is_isogram?(string) + assert Isogram.isogram?(string), "Expected 'true', 'Hjelmqvist-Gryb-Zock-Pfund-Wax' is an isogram" end def test_made_up_name_that_is_an_isogram skip string = "Emily Jung Schwartzkopf" - assert Isogram.is_isogram?(string) + assert Isogram.isogram?(string), "Expected 'true', 'Emily Jung Schwartzkopf' is an isogram" end def test_duplicated_character_in_the_middle skip string = "accentor" - refute Isogram.is_isogram?(string) + refute Isogram.isogram?(string), "Expected 'false', 'accentor' is not an isogram" end # Problems in exercism evolve over time, as we find better ways to ask @@ -77,6 +77,6 @@ def test_duplicated_character_in_the_middle def test_bookkeeping skip - assert_equal 3, BookKeeping::VERSION + assert_equal 4, BookKeeping::VERSION end end From 4951eed57fa71ccd69a300916119b210f85f421a Mon Sep 17 00:00:00 2001 From: Alexander Delgado Date: Fri, 2 Jun 2017 11:39:21 -0700 Subject: [PATCH 2/2] Unquote booleans and integrate feedback for failure_message method --- .../isogram/.meta/generator/isogram_case.rb | 10 +++++++--- exercises/isogram/isogram_test.rb | 18 +++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/exercises/isogram/.meta/generator/isogram_case.rb b/exercises/isogram/.meta/generator/isogram_case.rb index f07ebd29b6..a121d977c1 100644 --- a/exercises/isogram/.meta/generator/isogram_case.rb +++ b/exercises/isogram/.meta/generator/isogram_case.rb @@ -14,11 +14,15 @@ def workload private def failure_message - %Q("Expected '#{expected}', '#{input}' #{type}") + %Q("Expected #{expected}, #{reason}") end - def type - "#{expected ? 'is' : 'is not'} an isogram" + def reason + "'#{input}' #{is_or_not} an isogram" + end + + def is_or_not + expected ? 'is' : 'is not' end end diff --git a/exercises/isogram/isogram_test.rb b/exercises/isogram/isogram_test.rb index 4442a17c30..5170678380 100755 --- a/exercises/isogram/isogram_test.rb +++ b/exercises/isogram/isogram_test.rb @@ -7,55 +7,55 @@ class IsogramTest < Minitest::Test def test_empty_string # skip string = "" - assert Isogram.isogram?(string), "Expected 'true', '' is an isogram" + assert Isogram.isogram?(string), "Expected true, '' is an isogram" end def test_isogram_with_only_lower_case_characters skip string = "isogram" - assert Isogram.isogram?(string), "Expected 'true', 'isogram' is an isogram" + assert Isogram.isogram?(string), "Expected true, 'isogram' is an isogram" end def test_word_with_one_duplicated_character skip string = "eleven" - refute Isogram.isogram?(string), "Expected 'false', 'eleven' is not an isogram" + refute Isogram.isogram?(string), "Expected false, 'eleven' is not an isogram" end def test_longest_reported_english_isogram skip string = "subdermatoglyphic" - assert Isogram.isogram?(string), "Expected 'true', 'subdermatoglyphic' is an isogram" + assert Isogram.isogram?(string), "Expected true, 'subdermatoglyphic' is an isogram" end def test_word_with_duplicated_character_in_mixed_case skip string = "Alphabet" - refute Isogram.isogram?(string), "Expected 'false', 'Alphabet' is not an isogram" + refute Isogram.isogram?(string), "Expected false, 'Alphabet' is not an isogram" end def test_hypothetical_isogrammic_word_with_hyphen skip string = "thumbscrew-japingly" - assert Isogram.isogram?(string), "Expected 'true', 'thumbscrew-japingly' is an isogram" + assert Isogram.isogram?(string), "Expected true, 'thumbscrew-japingly' is an isogram" end def test_isogram_with_duplicated_non_letter_character skip string = "Hjelmqvist-Gryb-Zock-Pfund-Wax" - assert Isogram.isogram?(string), "Expected 'true', 'Hjelmqvist-Gryb-Zock-Pfund-Wax' is an isogram" + assert Isogram.isogram?(string), "Expected true, 'Hjelmqvist-Gryb-Zock-Pfund-Wax' is an isogram" end def test_made_up_name_that_is_an_isogram skip string = "Emily Jung Schwartzkopf" - assert Isogram.isogram?(string), "Expected 'true', 'Emily Jung Schwartzkopf' is an isogram" + assert Isogram.isogram?(string), "Expected true, 'Emily Jung Schwartzkopf' is an isogram" end def test_duplicated_character_in_the_middle skip string = "accentor" - refute Isogram.isogram?(string), "Expected 'false', 'accentor' is not an isogram" + refute Isogram.isogram?(string), "Expected false, 'accentor' is not an isogram" end # Problems in exercism evolve over time, as we find better ways to ask