示例#1
0
class MASLsTest(unittest.TestCase):
    def setUp(self):
        self.x = SearchEngine()

    def tearDown(self):
        pass

    def test_list_empty(self):
        result = self.x.merge_and_sort_lists([])
        wanted = []
        self.assertEqual(list(result), wanted)

    def test_list_empty2(self):
        result = self.x.merge_and_sort_lists([[], [], []])
        wanted = []
        self.assertEqual(list(result), wanted)

    def test_1_list_int(self):
        result = self.x.merge_and_sort_lists([[9, 10, 11]])
        wanted = [9, 10, 11]
        self.assertEqual(list(result), wanted)

    def test_2_list_int(self):
        result = self.x.merge_and_sort_lists([[1, 2, 3], [9, 10, 11]])
        wanted = [1, 2, 3, 9, 10, 11]
        self.assertEqual(list(result), wanted)

    def test_3_list_int(self):
        result = self.x.merge_and_sort_lists([[1, 2, 3], [9, 10, 11],
                                              [4, 5, 6]])
        wanted = [1, 2, 3, 4, 5, 6, 9, 10, 11]
        self.assertEqual(list(result), wanted)

    def test_3_list_int_dif_len(self):
        result = self.x.merge_and_sort_lists([[1, 2, 3],
                                              [9, 10, 11, 12, 13, 14, 15],
                                              [4, 5, 6, 7, 8]])
        wanted = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
        self.assertEqual(list(result), wanted)

    def test_3_list_int_empty(self):
        result = self.x.merge_and_sort_lists([[1, 2, 3], [], [4, 5, 6, 7, 8]])
        wanted = [1, 2, 3, 4, 5, 6, 7, 8]
        self.assertEqual(list(result), wanted)

    def test_1_list_abc(self):
        result = self.x.merge_and_sort_lists([['c', 'a', 'b']])
        wanted = ['c', 'a', 'b']
        self.assertEqual(list(result), wanted)

    def test_3_list_abc_dif_len(self):
        result = self.x.merge_and_sort_lists([['a', 'b', 'c'],
                                              ['d', 'f', 'g', 'h']])
        wanted = ['a', 'b', 'c', 'd', 'f', 'g', 'h']
        self.assertEqual(list(result), wanted)
class WindowsTest(unittest.TestCase):
    def setUp(self):
        self.strr = 'sun window tree apple, juse border films 23 45good'
        #            01234567890123456789012345678901234567890123456789
        #            0         1         2         3         4
        self.strr2 = 'Мы тестируем нашу программу для работы с окнами. '
        #             01234567890123456789012345678901234567890123456789
        #             0         1         2         3         4
        self.strr3 = 'Первая строка для тестов.\n'
        #              01234567890123456789012345678901234567890123456789
        #              0         1         2         3         4

        self.strr4 = 'Вторая строка для тестов.'
        #              01234567890123456789012345678901234567890123456789
        #              0         1         2         3         4

        self.test_file = open('test_window_one.txt', 'w')
        self.test_file.write(self.strr)
        self.test_file.close()

        self.test_file = open('test_window_two.txt', 'w')
        self.test_file.write(self.strr2)
        self.test_file.close()

        self.test_file = open('test_window_three.txt', 'w')
        self.test_file.write(self.strr3)
        self.test_file.write(self.strr4)
        self.test_file.close()

        self.x = SearchEngine("test_db")
        self.x.database.update(idealdict)

    def tearDown(self):
        del self.x
        file_list = os.listdir(path=".")
        for i in file_list:
            if i == 'test_window_one.txt' or i == 'test_window_two.txt' or i == 'test_window_three.txt':
                os.remove(i)
            if i.startswith('test_db.'):
                os.remove(i)

    def test_wrong_input_error(self):
        with self.assertRaises(ValueError):
            files = ['test_window_one.txt']
            win = self.x.multiple_search_lim_gen(3, 0, 1)

    def test_absent_key(self):
        result = self.x.multiple_search_lim_gen('zzzz', 0, 1)
        self.assertEqual(result, {})

    def test_empty_string(self):
        result = self.x.multiple_search_lim_gen('', 0, 1)
        self.assertIsInstance(result, dict)
        self.assertEqual(result, {})

    def test_get_window_begin(self):
        result = self.x.multiple_search_lim_gen('sun', 0, 1)
        t = self.x.merge_and_sort_lists([[Position(0, 3, 0)]])
        ideal = {'test_window_one.txt': t}
        self.assertEqual(list(result['test_window_one.txt']),
                         list(ideal['test_window_one.txt']))

    def test_get_window_simple(self):
        result = self.x.multiple_search_lim_gen('tree', 0, 1)
        t = self.x.merge_and_sort_lists([[Position(11, 15, 0)]])
        ideal = {'test_window_one.txt': t}
        self.assertEqual(list(result['test_window_one.txt']),
                         list(ideal['test_window_one.txt']))

    def test_get_window_end(self):
        result = self.x.multiple_search_lim_gen('good', 0, 1)
        t = self.x.merge_and_sort_lists([[Position(46, 50, 0)]])
        ideal = {'test_window_one.txt': t}
        self.assertEqual(list(result['test_window_one.txt']),
                         list(ideal['test_window_one.txt']))

    def test_get_window_simple2(self):
        result = self.x.multiple_search_lim_gen('нашу', 0, 1)
        t = self.x.merge_and_sort_lists([[Position(13, 17, 0)]])
        ideal = {'test_window_two.txt': t}
        self.assertEqual(list(result['test_window_two.txt']),
                         list(ideal['test_window_two.txt']))

    def test_get_window_simple_two_line(self):
        result = self.x.multiple_search_lim_gen('Вторая', 0, 1)
        t = self.x.merge_and_sort_lists([[Position(0, 6, 1)]])
        ideal = {'test_window_three.txt': t}
        self.assertEqual(list(result['test_window_three.txt']),
                         list(ideal['test_window_three.txt']))

    def test_get_window_two_result(self):
        result = self.x.multiple_search_lim_gen('тестов', 0, 1)
        t = self.x.merge_and_sort_lists(
            [[Position(18, 24, 0), Position(18, 24, 1)]])
        ideal = {'test_window_three.txt': t}
        self.assertEqual(list(result['test_window_three.txt']),
                         list(ideal['test_window_three.txt']))

    def test_get_window_two_result3(self):
        result = self.x.multiple_search_lim_gen('тестов', 0, 1)
        t = self.x.merge_and_sort_lists(
            [[Position(18, 24, 0), Position(18, 24, 1)]])
        ideal = {'test_window_three.txt': t}
        self.assertEqual(list(result['test_window_three.txt']),
                         list(ideal['test_window_three.txt']))

    def test_get_window_wrong_offset(self):
        result = self.x.multiple_search_lim_gen('tree', 5, 2)
        ideal = {}
        self.assertEqual(result, ideal)