import unittest
import os
from tabu_search import generate_neighbours, generate_first_solution, find_neighborhood, tabu_search

TEST_FILE = os.path.join(os.path.dirname(__file__), './tabu_test_data.txt')

NEIGHBOURS_DICT = {'a': [['b', '20'], ['c', '18'], ['d', '22'], ['e', '26']],
                   'c': [['a', '18'], ['b', '10'], ['d', '23'], ['e', '24']],
                   'b': [['a', '20'], ['c', '10'], ['d', '11'], ['e', '12']],
                   'e': [['a', '26'], ['b', '12'], ['c', '24'], ['d', '40']],
                   'd': [['a', '22'], ['b', '11'], ['c', '23'], ['e', '40']]}

FIRST_SOLUTION = ['a', 'c', 'b', 'd', 'e', 'a']

DISTANCE = 105

NEIGHBOURHOOD_OF_SOLUTIONS = [['a', 'e', 'b', 'd', 'c', 'a', 90],
                              ['a', 'c', 'd', 'b', 'e', 'a', 90],
                              ['a', 'd', 'b', 'c', 'e', 'a', 93],
                              ['a', 'c', 'b', 'e', 'd', 'a', 102],
                              ['a', 'c', 'e', 'd', 'b', 'a', 113],
                              ['a', 'b', 'c', 'd', 'e', 'a', 119]]


class TestClass(unittest.TestCase):
    def test_generate_neighbours(self):
        neighbours = generate_neighbours(TEST_FILE)

        self.assertEquals(NEIGHBOURS_DICT, neighbours)

    def test_generate_first_solutions(self):
        first_solution, distance = generate_first_solution(TEST_FILE, NEIGHBOURS_DICT)

        self.assertEquals(FIRST_SOLUTION, first_solution)
        self.assertEquals(DISTANCE, distance)

    def test_find_neighbours(self):
        neighbour_of_solutions = find_neighborhood(FIRST_SOLUTION, NEIGHBOURS_DICT)

        self.assertEquals(NEIGHBOURHOOD_OF_SOLUTIONS, neighbour_of_solutions)

    def test_tabu_search(self):
        best_sol, best_cost = tabu_search(FIRST_SOLUTION, DISTANCE, NEIGHBOURS_DICT, 4, 3)

        self.assertEquals(['a', 'd', 'b', 'e', 'c', 'a'], best_sol)
        self.assertEquals(87, best_cost)

@@ -1200,33 +1200,32 @@
 self.assertEqual
-s
 (NEIGHBOURS_DICT
@@ -1238,16 +1238,16 @@
 hbours)%0A
+
 %0A    def
@@ -1396,17 +1396,16 @@
 ertEqual
-s
 (FIRST_S
@@ -1453,17 +1453,16 @@
 ertEqual
-s
 (DISTANC
@@ -1620,17 +1620,16 @@
 ertEqual
-s
 (NEIGHBO
@@ -1822,17 +1822,16 @@
 ertEqual
-s
 (%5B'a', '
@@ -1889,17 +1889,16 @@
 ertEqual
-s
 (87, bes

Fix use of deprecated assertEquals() in tests (#680)