File: test_mutation.py

package info (click to toggle)
deap 1.4.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,372 kB
  • sloc: python: 9,874; ansic: 1,054; cpp: 592; javascript: 153; makefile: 95; sh: 7
file content (45 lines) | stat: -rw-r--r-- 1,937 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import unittest
from unittest import mock

from deap.tools.mutation import mutInversion


class MutationTest(unittest.TestCase):

    def test_mutInverstion_size_zero_chromosome_returns_unchanged_chromosome_in_tuple(self):
        chromosome = []
        expected = []
        self.assertEqual((expected,), mutInversion(chromosome))

    def test_mutInversion_size_one_chromosome_returns_unchanged_chromosome_in_tuple(self):
        chromosome = ["a"]
        expected = ["a"]
        self.assertEqual((expected,), mutInversion(chromosome))

    @mock.patch("random.randrange")
    def test_mutInversion_same_random_indices_returns_unchanged_chromosome_in_tuple(self, mock_randrange):
        mock_randrange.side_effect = [2, 2]
        chromosome = ["a", "b", "c", "d", "e"]
        expected = ["a", "b", "c", "d", "e"]
        self.assertEqual((expected,), mutInversion(chromosome))

    @mock.patch("random.randrange")
    def test_mutInversion_difference_of_one_random_indices_returns_unchanged_chromosome_in_tuple(self, mock_randrange):
        mock_randrange.side_effect = [2, 3]
        chromosome = ["a", "b", "c", "d", "e"]
        expected = ["a", "b", "c", "d", "e"]
        self.assertEqual((expected,), mutInversion(chromosome))

    @mock.patch("random.randrange")
    def test_mutInversion_full_length_random_indices_returns_reversed_chromosome_in_tuple(self, mock_randrange):
        mock_randrange.side_effect = [0, 5]
        chromosome = ["a", "b", "c", "d", "e"]
        expected = ["e", "d", "c", "b", "a"]
        self.assertEqual((expected,), mutInversion(chromosome))

    @mock.patch("random.randrange")
    def test_mutInversion_general_case_returns_correctly_mutated_chromosome_in_tuple(self, mock_randrange):
        mock_randrange.side_effect = [1, 4]
        chromosome = ["a", "b", "c", "d", "e"]
        expected = ["a", "d", "c", "b", "e"]
        self.assertEqual((expected,), mutInversion(chromosome))