162306a36Sopenharmony_ci""" 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 362306a36Sopenharmony_citdc_helper.py - tdc helper functions 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciCopyright (C) 2017 Lucas Bates <lucasb@mojatatu.com> 662306a36Sopenharmony_ci""" 762306a36Sopenharmony_ci 862306a36Sopenharmony_cidef get_categorized_testlist(alltests, ucat): 962306a36Sopenharmony_ci """ Sort the master test list into categories. """ 1062306a36Sopenharmony_ci testcases = dict() 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci for category in ucat: 1362306a36Sopenharmony_ci testcases[category] = list(filter(lambda x: category in x['category'], alltests)) 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci return(testcases) 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cidef get_unique_item(lst): 1962306a36Sopenharmony_ci """ For a list, return a list of the unique items in the list. """ 2062306a36Sopenharmony_ci if len(lst) > 1: 2162306a36Sopenharmony_ci return list(set(lst)) 2262306a36Sopenharmony_ci else: 2362306a36Sopenharmony_ci return lst 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cidef get_test_categories(alltests): 2762306a36Sopenharmony_ci """ Discover all unique test categories present in the test case file. """ 2862306a36Sopenharmony_ci ucat = [] 2962306a36Sopenharmony_ci for t in alltests: 3062306a36Sopenharmony_ci ucat.extend(get_unique_item(t['category'])) 3162306a36Sopenharmony_ci ucat = get_unique_item(ucat) 3262306a36Sopenharmony_ci return ucat 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_cidef list_test_cases(testlist): 3562306a36Sopenharmony_ci """ Print IDs and names of all test cases. """ 3662306a36Sopenharmony_ci for curcase in testlist: 3762306a36Sopenharmony_ci print(curcase['id'] + ': (' + ', '.join(curcase['category']) + ") " + curcase['name']) 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cidef list_categories(testlist): 4162306a36Sopenharmony_ci """ Show all categories that are present in a test case file. """ 4262306a36Sopenharmony_ci categories = set(map(lambda x: x['category'], testlist)) 4362306a36Sopenharmony_ci print("Available categories:") 4462306a36Sopenharmony_ci print(", ".join(str(s) for s in categories)) 4562306a36Sopenharmony_ci print("") 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cidef print_list(cmdlist): 4962306a36Sopenharmony_ci """ Print a list of strings prepended with a tab. """ 5062306a36Sopenharmony_ci for l in cmdlist: 5162306a36Sopenharmony_ci if (type(l) == list): 5262306a36Sopenharmony_ci print("\t" + str(l[0])) 5362306a36Sopenharmony_ci else: 5462306a36Sopenharmony_ci print("\t" + str(l)) 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cidef print_sll(items): 5862306a36Sopenharmony_ci print("\n".join(str(s) for s in items)) 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cidef print_test_case(tcase): 6262306a36Sopenharmony_ci """ Pretty-printing of a given test case. """ 6362306a36Sopenharmony_ci print('\n==============\nTest {}\t{}\n'.format(tcase['id'], tcase['name'])) 6462306a36Sopenharmony_ci for k in tcase.keys(): 6562306a36Sopenharmony_ci if (isinstance(tcase[k], list)): 6662306a36Sopenharmony_ci print(k + ":") 6762306a36Sopenharmony_ci print_list(tcase[k]) 6862306a36Sopenharmony_ci else: 6962306a36Sopenharmony_ci if not ((k == 'id') or (k == 'name')): 7062306a36Sopenharmony_ci print(k + ": " + str(tcase[k])) 71