示例#1
0
    def test_graph_property(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))

        word_ladder.find_path('Abe', 'Abel')
        eq_(id(word_ladder._graph_diff_length), id(word_ladder.graph))

        word_ladder.find_path('flux', 'sail')
        eq_(id(word_ladder._graph_same_length), id(word_ladder.graph))
示例#2
0
 def test_find_path_if_words_are_defined_trough_instance_variables(self):
     word_ladder = WordLadder(
         os.path.join(word_lists_dir, 'word_lists',
                      'linux_english_words_length_4'))
     word_ladder.start = 'sail'
     word_ladder.end = 'fear'
     eq_(word_ladder.find_path(),
         ['sail', 'hail', 'hair', 'heir', 'hear', 'fear'])
示例#3
0
    def test_graph_is_reused_among_executions(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))

        word_ladder.find_path('Abe', 'Abel')
        _id = id(word_ladder.graph)
        word_ladder.find_path('Jeanne', 'sail')
        eq_(_id, id(word_ladder.graph))

        word_ladder.find_path('fear', 'sail')
        _id = id(word_ladder.graph)
        word_ladder.find_path('flux', 'fear')
        eq_(_id, id(word_ladder.graph))
示例#4
0
    def test_find_path_caching(self):
        self.clean_tmp_files()
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))
        word_ladder.find_path('fear', 'fear'), ['fear']
        eq_(word_ladder._retrieval_method, 'scratch')

        word_ladder.find_path('fear', 'fear'), ['fear']
        eq_(word_ladder._retrieval_method, 'memory')

        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))
        word_ladder.find_path('fear', 'fear'), ['fear']
        eq_(word_ladder._retrieval_method, 'pickling')
示例#5
0
 def test_start_or_end_not_defined_raises_words_not_defined_exception(self):
     word_ladder = WordLadder(
         os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))
     word_ladder.find_path()
示例#6
0
class TestWordLadder(unittest.TestCase):
    def setUp(self):
        self.word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))

    def test_word_list_is_created(self):
        ok_(isinstance(self.word_ladder.words, list))

    def test_find_path_same_length(self):
        eq_(self.word_ladder.find_path('fear', 'fear'), ['fear'])
        eq_(self.word_ladder.find_path('fear', 'sail'),
            ['fear', 'hear', 'heir', 'hair', 'hail', 'sail'])

    def test_find_path_different_length(self):
        self.word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))
        eq_(self.word_ladder.find_path('Abe', 'Abel'), ['Abe', 'Abel'])

    def test_find_path_not_found(self):
        eq_(self.word_ladder.find_path('Abelardo', 'Abel'), None)

    def test_find_path_different_length_going_up_and_down(self):
        self.word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'fixture.1'))
        eq_(self.word_ladder.find_path('a', 'eoha'),
            ['a', 'ai', 'aie', 'wie', 'wieo', 'ieo', 'eo', 'eoh', 'eoha'])

    def test_words_has_same_length_method(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))
        eq_(word_ladder.words_has_same_length(), None)
        word_ladder.start = '1234'
        eq_(word_ladder.words_has_same_length(), None)
        word_ladder.end = '1234'
        eq_(word_ladder.words_has_same_length(), True)
        word_ladder.start = '12345'
        eq_(word_ladder.words_has_same_length(), False)

    @raises(WordsNotDefined)
    def test_start_or_end_not_defined_raises_words_not_defined_exception(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))
        word_ladder.find_path()

    def test_graph_is_reused_among_executions(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))

        word_ladder.find_path('Abe', 'Abel')
        _id = id(word_ladder.graph)
        word_ladder.find_path('Jeanne', 'sail')
        eq_(_id, id(word_ladder.graph))

        word_ladder.find_path('fear', 'sail')
        _id = id(word_ladder.graph)
        word_ladder.find_path('flux', 'fear')
        eq_(_id, id(word_ladder.graph))

    def test_graph_property(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))

        word_ladder.find_path('Abe', 'Abel')
        eq_(id(word_ladder._graph_diff_length), id(word_ladder.graph))

        word_ladder.find_path('flux', 'sail')
        eq_(id(word_ladder._graph_same_length), id(word_ladder.graph))

    def test_find_path_if_words_are_defined_trough_instance_variables(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))
        word_ladder.start = 'sail'
        word_ladder.end = 'fear'
        eq_(word_ladder.find_path(),
            ['sail', 'hail', 'hair', 'heir', 'hear', 'fear'])

    def test_find_path_if_words_are_defined_at_instance_declaration_time(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'), 'sail', 'fear')
        eq_(word_ladder.find_path(),
            ['sail', 'hail', 'hair', 'heir', 'hear', 'fear'])
示例#7
0
 def test_find_path_if_words_are_defined_at_instance_declaration_time(self):
     word_ladder = WordLadder(
         os.path.join(word_lists_dir, 'word_lists',
                      'linux_english_words_length_4'), 'sail', 'fear')
     eq_(word_ladder.find_path(),
         ['sail', 'hail', 'hair', 'heir', 'hear', 'fear'])
示例#8
0
class TestWordLadder(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.clean_tmp_files()
        cls.word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))

    @classmethod
    def clean_tmp_files(cls):
        for f in os.listdir(WordLadder.tmp):
            if re.search('.*_(SAME|DIFF)', f):
                os.remove(os.path.join(WordLadder.tmp, f))

    def test_find_path_caching(self):
        self.clean_tmp_files()
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))
        word_ladder.find_path('fear', 'fear'), ['fear']
        eq_(word_ladder._retrieval_method, 'scratch')

        word_ladder.find_path('fear', 'fear'), ['fear']
        eq_(word_ladder._retrieval_method, 'memory')

        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))
        word_ladder.find_path('fear', 'fear'), ['fear']
        eq_(word_ladder._retrieval_method, 'pickling')

    def test_word_list_is_created(self):
        ok_(isinstance(self.word_ladder.words, list))

    def test_find_path_same_length(self):
        eq_(self.word_ladder.find_path('fear', 'fear'), ['fear'])
        eq_(self.word_ladder.find_path('fear', 'sail'),
            ['fear', 'hear', 'heir', 'hair', 'hail', 'sail'])

    def test_find_path_different_length(self):
        self.word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))
        eq_(self.word_ladder.find_path('Abe', 'Abel'), ['Abe', 'Abel'])

    def test_find_path_not_found(self):
        eq_(self.word_ladder.find_path('Abelardo', 'Abel'), None)

    def test_find_path_different_length_going_up_and_down(self):
        self.word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'fixture.1'))
        eq_(self.word_ladder.find_path('a', 'eoha'),
            ['a', 'ai', 'aie', 'wie', 'wieo', 'ieo', 'eo', 'eoh', 'eoha'])

    def test_words_has_same_length_method(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))
        eq_(word_ladder.words_has_same_length(), None)
        word_ladder.start = '1234'
        eq_(word_ladder.words_has_same_length(), None)
        word_ladder.end = '1234'
        eq_(word_ladder.words_has_same_length(), True)
        word_ladder.start = '12345'
        eq_(word_ladder.words_has_same_length(), False)

    @raises(WordsNotDefined)
    def test_start_or_end_not_defined_raises_words_not_defined_exception(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))
        word_ladder.find_path()

    def test_graph_is_reused_among_executions(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))

        word_ladder.find_path('Abe', 'Abel')
        _id = id(word_ladder.graph)
        word_ladder.find_path('Jeanne', 'sail')
        eq_(_id, id(word_ladder.graph))

        word_ladder.find_path('fear', 'sail')
        _id = id(word_ladder.graph)
        word_ladder.find_path('flux', 'fear')
        eq_(_id, id(word_ladder.graph))

    def test_graph_property(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists', 'linux_english_words'))

        word_ladder.find_path('Abe', 'Abel')
        eq_(id(word_ladder._graph_diff_length), id(word_ladder.graph))

        word_ladder.find_path('flux', 'sail')
        eq_(id(word_ladder._graph_same_length), id(word_ladder.graph))

    def test_find_path_if_words_are_defined_trough_instance_variables(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'))
        word_ladder.start = 'sail'
        word_ladder.end = 'fear'
        eq_(word_ladder.find_path(),
            ['sail', 'hail', 'hair', 'heir', 'hear', 'fear'])

    def test_find_path_if_words_are_defined_at_instance_declaration_time(self):
        word_ladder = WordLadder(
            os.path.join(word_lists_dir, 'word_lists',
                         'linux_english_words_length_4'), 'sail', 'fear')
        eq_(word_ladder.find_path(),
            ['sail', 'hail', 'hair', 'heir', 'hear', 'fear'])