PageRenderTime 64ms CodeModel.GetById 36ms RepoModel.GetById 0ms app.codeStats 1ms

/tests.rb

https://bitbucket.org/pseale/dailyprogrammer114
Ruby | 64 lines | 57 code | 7 blank | 0 comment | 0 complexity | c62d293ae9b7a18ca557fea56fc2c961 MD5 | raw file
  1. require 'test/unit'
  2. require_relative 'WordLadder'
  3. require_relative 'ThreeStepLadder'
  4. class WordLadderClimbTest < Test::Unit::TestCase
  5. def test_Given_a_list_of_dissimilar_words__When_climbing_the_word_ladder__Should_indicate_there_are_no_similar_words
  6. words = ["aaaa", "bbbb"]
  7. word_ladder = WordLadder.new words
  8. result = word_ladder.climb "cccc"
  9. assert_equal [], result
  10. end
  11. def test_Given_a_list_containing_one_similar_word__When_climbing_the_word_ladder__Should_indicate_there_is_one_similar_word
  12. words = ["aaaa", "bbbb"]
  13. word_ladder = WordLadder.new words
  14. result = word_ladder.climb "aaaZ"
  15. assert_equal ["aaaa"], result
  16. end
  17. end
  18. class WordLadderClimbBetweenTest < Test::Unit::TestCase
  19. 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
  20. words = ["aaaa", "aaab", "aaac"]
  21. word_ladder = WordLadder.new words
  22. found, ladder = word_ladder.climb_between "aaaa", "aaab"
  23. assert_equal true, found
  24. assert_equal ["aaaa", "aaab"], ladder
  25. end
  26. def test_Given_two_words_with_no_ladder_connecting_them__When_climbing_between_the_two_words__Should_indicate_there_is_no_possible_ladder
  27. words = ["aaaa", "zzzz"]
  28. word_ladder = WordLadder.new words
  29. found, ladder = word_ladder.climb_between "aaaa", "zzzz"
  30. assert_equal false, found
  31. assert_equal [], ladder
  32. end
  33. def test_Given_two_words_with_one_rung_between_them__When_climbing_between_the_two_words__Should_climb_the_middle_rung
  34. words = ["aaaa", "aaab", "aabb"]
  35. word_ladder = WordLadder.new words
  36. found, ladder = word_ladder.climb_between "aaaa", "aabb"
  37. assert_equal true, found
  38. assert_equal ["aaaa", "aaab", "aabb"], ladder
  39. end
  40. def test_Given_a_potential_word_ladder_infinite_loop__When_climbing_between_the_two_words__Should_solve_the_ladder_without_looping_infinitely
  41. words = ["aaaa", "aaab", "aabb", "abbb", "bbbb", "bbba", "bbaa", "baaa"]
  42. word_ladder = WordLadder.new words
  43. found, ladder = word_ladder.climb_between "aaaa", "bbbb"
  44. assert_equal true, found
  45. assert_equal 5, ladder.count, ladder
  46. assert_equal "aaaa", ladder[0]
  47. assert_equal "bbbb", ladder[-1]
  48. end
  49. end
  50. class ThreeStepLadderTest < Test::Unit::TestCase
  51. 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
  52. words = ["best", "nest", "neat", "near", "bear"]
  53. three_step_ladder = ThreeStepLadder.new words
  54. result = three_step_ladder.get_steps "best"
  55. assert_equal ["nest", "neat", "near"], result
  56. end
  57. end