File: test_operators.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 (36 lines) | stat: -rw-r--r-- 1,069 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
import unittest
from unittest import mock
import random

from deap.tools import crossover

class TestCxOrdered(unittest.TestCase):
    def setUp(self):
        pass

    def test_crossover(self):
        a = [8, 7, 3, 4, 5, 6, 0, 2, 1, 9]
        b = [7, 6, 0, 1, 2, 9, 8, 4, 3, 5]
        expected_ap = [4, 5, 6, 1, 2, 9, 0, 8, 7, 3]
        expected_bp = [1, 2, 9, 4, 5, 6, 8, 3, 7, 0]

        with mock.patch("random.sample", return_value=[3, 5]):
            ap, bp = crossover.cxOrdered(a, b)

            self.assertSequenceEqual(expected_ap, ap)
            self.assertSequenceEqual(expected_bp, bp)


    def test_crossover_identical(self):
        i1 = list(range(100))
        random.shuffle(i1)
        i2 = list(range(100))
        random.shuffle(i2)

        a, b = sorted(random.sample(range(len(i1)), 2))

        with mock.patch("random.sample", return_value=[a, b]):
            ap, bp = crossover.cxOrdered(i1, i2)

        self.assertSequenceEqual(sorted(ap), list(range(len(ap))))
        self.assertSequenceEqual(sorted(bp), list(range(len(bp))))