TestCumulatedCallsStage   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 44
rs 10
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A test_calculate_quality_ok() 0 8 1
A test_get_output_of_stage_empty() 0 5 2
A test_get_output_of_stage() 0 7 1
A test__init__() 0 9 1
A test_calculate_quality_ex() 0 8 2
1
"""Test class for module calls_stage."""
2
3
from unittest import TestCase
4
from unittest.mock import Mock
5
6
from grortir.main.model.stages.cumulated_calls_stage import CumulatedCallsStage
7
8
MAX_CALLS = 100
9
CONTRL_PARAMS = [1, 1, 1, 1, 1, 1.5]
10
11
12
class TestCumulatedCallsStage(TestCase):
13
    """Test class for CumulatedCallsStage."""
14
15
    def test__init__(self):
0 ignored issues
show
Coding Style introduced by
This method should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
16
        tested_object = CumulatedCallsStage("Tested obj",
17
                                            MAX_CALLS, (1, 2, 3), 0.03)
18
        self.assertEquals(tested_object.control_params, [0, 0])
19
        self.assertEquals(tested_object.name, "Tested obj")
20
        self.assertEquals(tested_object.max_calls, MAX_CALLS)
21
        self.assertEquals(tested_object.maximum_acceptable_quality, 0.03)
22
        self.assertEquals(tested_object.lower_bounds, [-1, -1])
23
        self.assertEquals(tested_object.upper_bounds, [1, 1])
24
25
    def test_calculate_quality_ex(self):
26
        """Test case when control are wrong."""
27
        input_vector = (2, 3, 4, 5, 6)
28
        tested_object = CumulatedCallsStage('name', MAX_CALLS, input_vector)
29
        tested_object.control_params = [2, 2, 2, 2, 2]
30
        with self.assertRaises(AssertionError):
31
            tested_object.calculate_quality(input_vector,
32
                                            tested_object.control_params)
33
34
    def test_calculate_quality_ok(self):
35
        """Test case when control params and input are okay."""
36
        input_vector = (2, 3, 4, 5, 6, 1, 99)
37
        tested_object = CumulatedCallsStage('name', MAX_CALLS, input_vector)
38
        tested_object.control_params = CONTRL_PARAMS
39
        result = tested_object.calculate_quality(input_vector,
40
                                                 tested_object.control_params)
41
        self.assertEqual(result, 55.25)
42
43
    def test_get_output_of_stage_empty(self):
44
        """Test returning output."""
45
        tested_object = CumulatedCallsStage('name', MAX_CALLS)
46
        with self.assertRaises(AssertionError):
47
            tested_object.get_output_of_stage([], [])
48
49
    def test_get_output_of_stage(self):
0 ignored issues
show
Coding Style introduced by
This method should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
50
        tested_object = Mock()
51
        tested_object.calculate_quality.return_value = 999
52
        result = CumulatedCallsStage.get_output_of_stage(tested_object,
53
                                                         [1, 2, 3, 4, 99],
54
                                                         [5, 6, 7, 8])
55
        self.assertEqual([5, 6, 7, 8, 999], result)
56