fastest.constants   A
last analyzed

Complexity

Total Complexity 0

Size/Duplication

Total Lines 188
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 0
eloc 106
dl 0
loc 188
rs 10
c 0
b 0
f 0
1
import platform
2
3
4
class Sys:
5
    __UNIX_SLASH = '/'
6
    __WINDOWS_SLASH = '\\'
7
    PY = '.py'
8
    SLASH = __WINDOWS_SLASH if platform.system == 'Windows' else __UNIX_SLASH
9
    TEST_FILE_ENDING = '__test.py'
10
11
12
class Keys:
13
    IMPORTS = 'imports'
14
    NAME = 'name'
15
    TESTS = 'tests'
16
    TEST = 'test'
17
    STR = 'str'
18
    EXAMPLES = 'examples'
19
    FROM = 'from'
20
    EXPECT = 'expect'
21
    VARIABLES = 'variables'
22
    PARAMS = 'params'
23
    RETURN = 'return'
24
    EXCEPTION = 'exception'
25
26
27
class Content:
28
    CLASS_CREATE_TEMPLATE = '\nclass Test{}{}(unittest.TestCase):\n'
29
    IMPORT_UNITTEST = 'import unittest\n'
30
    DEPS_IMPORT_TEMPLATE = 'from {} import {}\n'
31
    TEST_CASE_TEMPLATE = '    def test__{function_name}__{case_id}(self):'
32
    TESTERS_NOTES_TEMPLATE = '        {testers_notes}'
33
    VARIABLES_TEMPLATE = '        {variables}\n'
34
    TYPE_ASSERT_TEMPLATE = '\n        self.assertIsInstance({function}, {value})'
35
    ASSERTION_TEMPLATE = '\n        self.assertEqual({function}, {value})\n'
36
    EXCEPTION_TEMPLATE = '\n        self.assertRaises({value}, {function}, {args})\n\n'
37
38
39
class Patterns:
40
    FUNCTION_CALL = r'example: [\s\S]+?(?=->)'
41
    IMPORT_DEC = '@need\n'
42
    VAR_DEC = r'@let '
43
    NEED_IMPORT = r'@need[\s\S]+?(?=@end)'
44
    NEEDED_VARIABLES = r'@let[\s\S]+?(?=@end)'
45
    NUMBER_BULLET = r'\d\) '
46
    TEST_CASE_EXAMPLE = r'\d\) [\s\S]+?(?=\n)'
47
    EXAMPLE_PASSAGE = r'-{3,}[\s\S]+?(?=---)'
48
    TEST_SEP = ' -> '
49
    EXCEPTION_CASE_EXAMPLE = r'!! [\s\S]+?(?=\n)'
50
51
class TestBodies:
52
    GET_FUNCTIONS_TEST_CASE_1 = """
53
def function_1():
54
    return 1
55
"""
56
    GET_FUNCTIONS_TEST_CASE_1_EXPECT = [{'name': 'function_1', 'tests': {}}]
57
    TYPE_TEST_CASE_1 = '\n        self.assertIsInstance(function_1(str, str), str)'
58
    TYPE_TEST_CASE_2 = '\n        self.assertIsInstance(function_1(str, str), str)'
59
    ASSERTION_TEST_1 = '        a = 5\n'
60
    NAIVE_TEST_RESULT = """    def test__function_1__A55EFF11ED(self):        a = 5
61
62
        self.assertEqual(function_1, 2)\n"""
63
    EXCEPTION_TEST_RESULT = """    def test__function_1__A55EFF11ED(self):        a = 5
64
65
        self.assertRaises(TypeError, function_1, None)\n
66
"""
67
    TEST_STACK_IMPORTS_OUTPUT = ['from datetime import datetime\n', 'import numpy as np\n']
68
    TEST_STACK_IMPORTS_INPUT = ['from datetime import datetime  ', ' import numpy as np ']
69
    EXAMPLE_WITH_IMPORTS = """
70
    @need
71
    from datetime import datetime
72
    import numpy as np
73
    @end
74
    """
75
    TEST_IMPORT_EXTRACTION = [
76
        'from datetime import datetime\n',
77
        'import numpy as np\n',
78
        '\n'
79
    ]
80
81
    TEST_VARIABLES_FROM_DOCSTRING = """
82
    @let
83
    a = 4
84
    @end
85
    """
86
    TEST_VARIABLES_FROM_DOCSTRING_RESULT = ['', '    a = 4', '    ']
87
    STACK_EXAMPLES_TEST = ['1) square(5) -> 25']
88
    GET_PARAMS_FROM_DOCSTRING_TEST = """
89
    :param item: int
90
    :param store: dict
91
    """
92
    EXPECT_PARAMS = ['int', 'dict']
93
    RETURN_TYPE_TEST = """
94
    :return: int
95
    """
96
    TEST_EXAMPLE_PASSAGE = """
97
    1) square(4) -> 16
98
    2) page(20) -> []
99
    """
100
    TEST_EXAMPLE_PASSAGE_RESULT = [
101
        {'expect': '16', 'from': 'square(4)'},
102
        {'expect': '[]', 'from': 'page(20)'}
103
    ]
104
    NAIVE_CASE_TEST_STATEMENT = """
105
    ----
106
    example:
107
    
108
    @need
109
    from datetime import datetime
110
    @end
111
    
112
    @let
113
    a = 2
114
    x = 2
115
    @end
116
    
117
    1) pow(a, x) -> 4
118
    ----
119
    :param x: int
120
    :return: int
121
    """
122
    NAIVE_CASE_TEST_RESULT = {
123
        'examples': [{'expect': '4', 'from': 'pow(a, x)'}],
124
        'imports': ['from datetime import datetime\n', '\n'],
125
        'params': ['int'],
126
        'return': 'int',
127
        'variables': ['', '    a = 2', '    x = 2', '    ']
128
    }
129
    CREATE_TEST_CLASS_RESULT = ({'from fastest/__main__ import add_imports_for_test_case\n',
130
                                 'import random',
131
                                 'import unittest\n'},
132
                                ['', '\nclass TestFastestAddImportsForTestCase(unittest.TestCase):\n'])
133
134
    TEST_CASE_CONTENT_RESULT = ({'from fastest.constants import TestBodies\n', 'import random'},
135
                                ['',
136
                                 '    def test__add_imports_for_test_case__0A856D9D76(self):        \n'
137
                                 "        empty_test = { 'imports': None }\n"
138
                                 "        test = { 'imports': ['from datetime import datetime'] }\n"
139
                                 "        imports = {'import numpy as np'}\n"
140
                                 "        updated_imports = {'import numpy as np', 'from datetime import "
141
                                 "datetime'}\n"
142
                                 '        \n'
143
                                 '\n'
144
                                 '        self.assertEqual(add_imports_for_test_case(empty_test, imports), '
145
                                 'imports)\n',
146
                                 '    def test__add_imports_for_test_case__B502446AEB(self):        \n'
147
                                 "        empty_test = { 'imports': None }\n"
148
                                 "        test = { 'imports': ['from datetime import datetime'] }\n"
149
                                 "        imports = {'import numpy as np'}\n"
150
                                 "        updated_imports = {'import numpy as np', 'from datetime import "
151
                                 "datetime'}\n"
152
                                 '        \n'
153
                                 '\n'
154
                                 '        self.assertEqual(add_imports_for_test_case(test, imports), '
155
                                 'updated_imports)\n'])
156
    MOCK_FUNCTION_OBJECT = {
157
        'name': 'add_imports_for_test_case',
158
        'tests': {
159
            'examples': [{
160
                'expect': 'imports',
161
                'from': 'add_imports_for_test_case(empty_test, '
162
                        'imports)'
163
            }, {
164
                'expect': 'updated_imports',
165
                'from': 'add_imports_for_test_case(test, '
166
                        'imports)'
167
            }],
168
            'imports': ['from fastest.constants import TestBodies\n'],
169
            'params': ['dict', 'set'],
170
            'return': 'set',
171
            'variables': ['',
172
                          "empty_test = { 'imports': None }",
173
                          "test = { 'imports': ['from datetime import "
174
                          "datetime'] }",
175
                          "imports = {'import numpy as np'}",
176
                          "updated_imports = {'import numpy as np', 'from "
177
                          "datetime import datetime'}",
178
                          '']
179
        }
180
    }
181
    PAGE_WITH_SYNTAX_ERRORS = 'def f('
182
    SEPARATOR_ERR_EXAMPLE = ''
183
    EXCEPTION_EXAMPLE_HAPPY_CASE = '!! exception_fn(None) -> TypeError\n'
184
    EXCEPTION_EXAMPLE_SEP_MISSING = '!! func_do_work(None)\n'
185
    EXCEPTION_HAPPY_CASE_OUTPUT = [{
186
        'from': 'exception_fn(None)',
187
        'exception': 'TypeError'
188
    }]
189