Completed
Push — master ( db2bdb...52f8b4 )
by Amresh
01:56 queued 46s
created

fastest.test_compiler.compile_tests   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 20
dl 0
loc 71
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A create_test_class() 0 34 1
A add_imports_for_test_case() 0 28 3
1
import os
2
from fastest.bodies import test_case_template_builder
3
from fastest.constants import Content, Keys, Sys
4
from fastest.utils import to_camel_case
5
6
7
def add_imports_for_test_case(test, imports):
8
    """
9
    ---
10
    examples:
11
12
    @need
13
    from fastest.constants import TestBodies
14
    @end
15
16
    @let
17
    empty_test = { 'imports': None }
18
    test = { 'imports': ['from datetime import datetime'] }
19
    imports = {'import numpy as np'}
20
    updated_imports = {'import numpy as np', 'from datetime import datetime'}
21
    @end
22
23
    1) add_imports_for_test_case(empty_test, imports) -> imports
24
    2) add_imports_for_test_case(test, imports) -> updated_imports
25
    ---
26
    :param test: dict
27
    :param imports: set
28
    :return: set
29
    """
30
    if test[Keys.IMPORTS] is None:
31
        return imports
32
    for import_statement in test[Keys.IMPORTS]:
33
        imports.add(import_statement)
34
    return imports
35
36
37
def create_test_class(imports, contents, deps_import, function_object, root_module_name):
38
    """
39
    ----
40
    examples:
41
42
    @need
43
    from fastest.constants import TestBodies
44
    @end
45
46
    @let
47
    imports = {'import random'}
48
    contents = ['']
49
    deps_import = 'fastest/__main__'
50
    function_object = TestBodies.MOCK_FUNCTION_OBJECT
51
    root_module_name = 'fastest'
52
    @end
53
54
    1) create_test_class(imports, contents, deps_import, function_object, root_module_name) -> TestBodies.CREATE_TEST_CLASS_RESULT
55
    ----
56
    :param imports: set
57
    :param contents: list
58
    :param deps_import: str
59
    :param function_object: dict
60
    :param root_module_name: str
61
    :return: tuple
62
    """
63
    imports.add(Content.IMPORT_UNITTEST)
64
    imports.add(Content.DEPS_IMPORT_TEMPLATE.format(deps_import, function_object[Keys.NAME]))
65
    camel_cased_root_module_name = to_camel_case(root_module_name)
66
    camel_cased_function_name = to_camel_case(function_object[Keys.NAME])
67
    contents.append(Content.CLASS_CREATE_TEMPLATE.format(
68
        camel_cased_root_module_name, camel_cased_function_name
69
    ))
70
    return imports, contents
71