/tests.rb
Ruby | 64 lines | 57 code | 7 blank | 0 comment | 0 complexity | c62d293ae9b7a18ca557fea56fc2c961 MD5 | raw file
- require 'test/unit'
- require_relative 'WordLadder'
- require_relative 'ThreeStepLadder'
- class WordLadderClimbTest < Test::Unit::TestCase
- def test_Given_a_list_of_dissimilar_words__When_climbing_the_word_ladder__Should_indicate_there_are_no_similar_words
- words = ["aaaa", "bbbb"]
- word_ladder = WordLadder.new words
- result = word_ladder.climb "cccc"
- assert_equal [], result
- end
- def test_Given_a_list_containing_one_similar_word__When_climbing_the_word_ladder__Should_indicate_there_is_one_similar_word
- words = ["aaaa", "bbbb"]
- word_ladder = WordLadder.new words
- result = word_ladder.climb "aaaZ"
- assert_equal ["aaaa"], result
- end
- end
- class WordLadderClimbBetweenTest < Test::Unit::TestCase
- def test_Given_two_words_immediately_next_to_each_other__When_climbing_between_the_two_words__Should_climb_between_the_two_words #you are a horrible person for writing this cop-out test name
- words = ["aaaa", "aaab", "aaac"]
- word_ladder = WordLadder.new words
- found, ladder = word_ladder.climb_between "aaaa", "aaab"
- assert_equal true, found
- assert_equal ["aaaa", "aaab"], ladder
- end
- def test_Given_two_words_with_no_ladder_connecting_them__When_climbing_between_the_two_words__Should_indicate_there_is_no_possible_ladder
- words = ["aaaa", "zzzz"]
- word_ladder = WordLadder.new words
- found, ladder = word_ladder.climb_between "aaaa", "zzzz"
- assert_equal false, found
- assert_equal [], ladder
- end
- def test_Given_two_words_with_one_rung_between_them__When_climbing_between_the_two_words__Should_climb_the_middle_rung
- words = ["aaaa", "aaab", "aabb"]
- word_ladder = WordLadder.new words
- found, ladder = word_ladder.climb_between "aaaa", "aabb"
- assert_equal true, found
- assert_equal ["aaaa", "aaab", "aabb"], ladder
- end
- def test_Given_a_potential_word_ladder_infinite_loop__When_climbing_between_the_two_words__Should_solve_the_ladder_without_looping_infinitely
- words = ["aaaa", "aaab", "aabb", "abbb", "bbbb", "bbba", "bbaa", "baaa"]
- word_ladder = WordLadder.new words
- found, ladder = word_ladder.climb_between "aaaa", "bbbb"
- assert_equal true, found
- assert_equal 5, ladder.count, ladder
- assert_equal "aaaa", ladder[0]
- assert_equal "bbbb", ladder[-1]
- end
- end
- class ThreeStepLadderTest < Test::Unit::TestCase
- def test_Given_a_list_of_words_containing_one_step_away_from_each_other__When_climbling_the_three_step_ladder__Should_return_all_words_three_steps_away
- words = ["best", "nest", "neat", "near", "bear"]
- three_step_ladder = ThreeStepLadder.new words
- result = three_step_ladder.get_steps "best"
- assert_equal ["nest", "neat", "near"], result
- end
- end