mirror of
https://git.suyu.dev/suyu/mbedtls.git
synced 2025-12-22 13:56:42 +01:00
Updated generate_code.py unit tests
This commit is contained in:
parent
4b54323bcb
commit
5e2ac1fb29
2 changed files with 299 additions and 12 deletions
|
|
@ -362,14 +362,15 @@ def escaped_split(str, ch):
|
|||
out.append(part)
|
||||
part = ''
|
||||
else:
|
||||
part += str[i]
|
||||
escape = not escape and str[i] == '\\'
|
||||
if not escape:
|
||||
part += str[i]
|
||||
if len(part):
|
||||
out.append(part)
|
||||
return out
|
||||
|
||||
|
||||
def parse_test_data(data_f):
|
||||
def parse_test_data(data_f, debug=False):
|
||||
"""
|
||||
Parses .data file
|
||||
|
||||
|
|
@ -380,14 +381,16 @@ def parse_test_data(data_f):
|
|||
STATE_READ_ARGS = 1
|
||||
state = STATE_READ_NAME
|
||||
deps = []
|
||||
|
||||
name = ''
|
||||
for line in data_f:
|
||||
line = line.strip()
|
||||
if len(line) and line[0] == '#': # Skip comments
|
||||
continue
|
||||
|
||||
# skip blank lines
|
||||
# Blank line indicates end of test
|
||||
if len(line) == 0:
|
||||
assert state != STATE_READ_ARGS, "Newline before arguments. " \
|
||||
"Test function and arguments missing for %s" % name
|
||||
continue
|
||||
|
||||
if state == STATE_READ_NAME:
|
||||
|
|
@ -398,7 +401,7 @@ def parse_test_data(data_f):
|
|||
# Check dependencies
|
||||
m = re.search('depends_on\:(.*)', line)
|
||||
if m:
|
||||
deps = m.group(1).split(':')
|
||||
deps = [x.strip() for x in m.group(1).split(':') if len(x.strip())]
|
||||
else:
|
||||
# Read test vectors
|
||||
parts = escaped_split(line, ':')
|
||||
|
|
@ -407,6 +410,8 @@ def parse_test_data(data_f):
|
|||
yield name, function, deps, args
|
||||
deps = []
|
||||
state = STATE_READ_NAME
|
||||
assert state != STATE_READ_ARGS, "Newline before arguments. " \
|
||||
"Test function and arguments missing for %s" % name
|
||||
|
||||
|
||||
def gen_dep_check(dep_id, dep):
|
||||
|
|
@ -417,11 +422,9 @@ def gen_dep_check(dep_id, dep):
|
|||
:param dep:
|
||||
:return:
|
||||
"""
|
||||
if dep[0] == '!':
|
||||
noT = '!'
|
||||
dep = dep[1:]
|
||||
else:
|
||||
noT = ''
|
||||
assert dep_id > -1, "Dependency Id should be a positive integer."
|
||||
noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep)
|
||||
assert len(dep) > 0, "Dependency should not be an empty string."
|
||||
dep_check = '''
|
||||
if ( dep_id == {id} )
|
||||
{{
|
||||
|
|
@ -433,7 +436,6 @@ if ( dep_id == {id} )
|
|||
}}
|
||||
else
|
||||
'''.format(noT=noT, macro=dep, id=dep_id)
|
||||
|
||||
return dep_check
|
||||
|
||||
|
||||
|
|
@ -445,6 +447,8 @@ def gen_expression_check(exp_id, exp):
|
|||
:param exp:
|
||||
:return:
|
||||
"""
|
||||
assert exp_id > -1, "Expression Id should be a positive integer."
|
||||
assert len(exp) > 0, "Expression should not be an empty string."
|
||||
exp_code = '''
|
||||
if ( exp_id == {exp_id} )
|
||||
{{
|
||||
|
|
@ -455,6 +459,17 @@ else
|
|||
return exp_code
|
||||
|
||||
|
||||
def find_unique_id(val, vals):
|
||||
"""
|
||||
Check if val already in vals. Gives a unique Identifier for the val.
|
||||
:param val:
|
||||
:param vals:
|
||||
:return:
|
||||
"""
|
||||
if val not in vals:
|
||||
vals.append(val)
|
||||
|
||||
|
||||
def gen_from_test_data(data_f, out_data_f, func_info, suite_deps):
|
||||
"""
|
||||
Generates dependency checks, expression code and intermediate data file from test data file.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue