def setUp(self):

        self.ES = ExampleSelectorGA()
class TestExampleSelectorGA(unittest.TestCase):
    def setUp(self):

        self.ES = ExampleSelectorGA()

    def test_set_data_from_path(self):

        self.ES.set_data_from_path("train_0", "test_0")

        assert all(x[0] == "1" for x in self.ES.train_actives)
        assert all(x[0] == "0" for x in self.ES.train_decoys)

    def test_set_up_deap(self):

        self.ES.set_data_from_path("train_0", "test_0")
        self.ES.setup_deap()

    def test_individual(self):

        self.ES.set_data_from_path("train_0", "test_0")
        self.ES.setup_deap()
        ind1 = self.ES.toolbox.individual()
        ind2 = self.ES.toolbox.individual()

        assert len(ind1) == len(ind2)

        self.ES.set_delimiting_indices()
        sp_ind1 = self.ES.single_ppl_ind()
        sp_ind2 = self.ES.single_ppl_ind()

        assert len(sp_ind1) == len(sp_ind2)
        assert sum(sp_ind1) == sum(sp_ind2)

    def test_translate(self):

        self.ES.set_data_from_path("train_0", "test_0")
        self.ES.setup_deap()

        individual = self.ES.toolbox.individual()
        self.ES.translate(individual)

    def test_mutate(self):

        self.ES.set_data_from_path("train_0", "test_0")
        self.ES.setup_deap()
        self.ES.set_delimiting_indices()

        individual = self.ES.toolbox.individual()
        self.ES.mutate(individual, 1.0)

        sp_individual = self.ES.single_ppl_ind()
        self.ES.sp_mutate(sp_individual, 1.0)

        assert sum(sp_individual) == len(self.ES.delimiting_indices) + 1

    def test_crossover(self):

        self.ES.set_data_from_path("train_0", "test_0")
        self.ES.setup_deap()
        self.ES.set_delimiting_indices()

        individual = self.ES.toolbox.individual()
        other = self.ES.toolbox.individual()
        self.ES.uniform_crossover(individual, other, 1.0)

        sp_individual = self.ES.single_ppl_ind()
        sp_other = self.ES.single_ppl_ind()
        self.ES.sp_crossover(sp_individual, sp_other, 1.0)

        assert sum(sp_individual) == sum(sp_other)
        assert sum(sp_individual) == len(self.ES.delimiting_indices) + 1