def test_algorithm_z(self): text_1 = "#baabab" text_2 = "#ababaa" fr = FourRussiansHelpers(lcs_delete_cost_function, lcs_insert_cost_function, substitute_cost_function2) m, A, step_size_bound, text_1, text_2 = fr.prepare_parameters(text_1, text_2) storage = fr.algorithm_y(m, A, step_size_bound) P, Q = fr.algorithm_z(m, storage, text_1, text_2) _, diff_between_rows, diff_between_columns = get_full_matrices( fr, text_1, text_2, lcs_delete_cost_function, lcs_insert_cost_function) for i in range(1, 4): for j in range(1, 4): self.assertEqual(P[i][j], [diff_between_rows[(i - 1) * m + 1][j * m], diff_between_rows[i * m][j * m]]) self.assertEqual(Q[i][j], [diff_between_columns[i * m][(j - 1) * m + 1], diff_between_columns[i * m][j * m]])
def check_lcs(self, text_1, text_2, expected_lcs): expected_length = len(expected_lcs) fr = FourRussiansHelpers(lcs_delete_cost_function, lcs_insert_cost_function, lcs_substitute_cost_function) m, A, step_size_bound, text_1, text_2 = fr.prepare_parameters(text_1, text_2) storage = fr.algorithm_y(m, A, step_size_bound) P, Q = fr.algorithm_z(m, storage, text_1, text_2) lcs = fr.restore_lcs(text_1, text_2, P, Q, m) self.assertEqual(len(lcs), expected_length, "Expected lcs of length {0}, actual lcs of length {1}. " "Actual result: {2}, expected result: {3}" .format(expected_length, len(lcs), lcs, expected_lcs)) self.assertEqual(lcs, expected_lcs)