import json
|
from pathlib import Path
|
|
plan = json.loads(Path('scripts/sop-qc/inspection-plan.json').read_text(encoding='utf-8'))
|
schemes = plan['schemes']
|
def scheme(number):
|
return next(s for s in schemes if s['code'].endswith('-'+number))
|
def item(number, name):
|
return next(i for i in scheme(number)['items'] if i['name']==name)
|
|
assert len(schemes)==231
|
assert len({s['code'] for s in schemes})==231
|
assert all(s['items'] for s in schemes)
|
assert '8.0%' in item('001','水分')['requirement']
|
assert '99.7' not in item('001','水分')['requirement']
|
assert '5.0-7.0' in item('071','pH值')['requirement']
|
assert 'JJG' not in item('071','pH值')['requirement']
|
assert '10^(4)' in item('217','菌落总数')['requirement']
|
assert all(item('185',n)['requirement'] for n in ['色泽','滋气味','形态'])
|
assert scheme('219')['status']==1
|
assert not scheme('219')['remote_material_matches']
|
assert all(i['result_type']==3 and i['threshold_min'] is None and i['threshold_max'] is None for s in schemes for i in s['items'])
|
assert all(s['status']==1 for s in schemes if any(not i['requirement'] for i in s['items']))
|
assert all(len(s['name'])<=100 for s in schemes)
|
for s in schemes:
|
for i in s['items']:
|
chunks=[i['requirement'][n:n+255] for n in range(0,len(i['requirement']),255)]
|
assert ''.join(chunks)==i['requirement']
|
print('PASS: source coverage, unique scheme codes, representative standards, superscripts, uncertain-product isolation, pending-review status, complete continuation text')
|