1*4882a593Smuzhiyun""" 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyuntdc_helper.py - tdc helper functions 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunCopyright (C) 2017 Lucas Bates <lucasb@mojatatu.com> 6*4882a593Smuzhiyun""" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyundef get_categorized_testlist(alltests, ucat): 9*4882a593Smuzhiyun """ Sort the master test list into categories. """ 10*4882a593Smuzhiyun testcases = dict() 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun for category in ucat: 13*4882a593Smuzhiyun testcases[category] = list(filter(lambda x: category in x['category'], alltests)) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun return(testcases) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun 18*4882a593Smuzhiyundef get_unique_item(lst): 19*4882a593Smuzhiyun """ For a list, return a list of the unique items in the list. """ 20*4882a593Smuzhiyun if len(lst) > 1: 21*4882a593Smuzhiyun return list(set(lst)) 22*4882a593Smuzhiyun else: 23*4882a593Smuzhiyun return lst 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun 26*4882a593Smuzhiyundef get_test_categories(alltests): 27*4882a593Smuzhiyun """ Discover all unique test categories present in the test case file. """ 28*4882a593Smuzhiyun ucat = [] 29*4882a593Smuzhiyun for t in alltests: 30*4882a593Smuzhiyun ucat.extend(get_unique_item(t['category'])) 31*4882a593Smuzhiyun ucat = get_unique_item(ucat) 32*4882a593Smuzhiyun return ucat 33*4882a593Smuzhiyun 34*4882a593Smuzhiyundef list_test_cases(testlist): 35*4882a593Smuzhiyun """ Print IDs and names of all test cases. """ 36*4882a593Smuzhiyun for curcase in testlist: 37*4882a593Smuzhiyun print(curcase['id'] + ': (' + ', '.join(curcase['category']) + ") " + curcase['name']) 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun 40*4882a593Smuzhiyundef list_categories(testlist): 41*4882a593Smuzhiyun """ Show all categories that are present in a test case file. """ 42*4882a593Smuzhiyun categories = set(map(lambda x: x['category'], testlist)) 43*4882a593Smuzhiyun print("Available categories:") 44*4882a593Smuzhiyun print(", ".join(str(s) for s in categories)) 45*4882a593Smuzhiyun print("") 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun 48*4882a593Smuzhiyundef print_list(cmdlist): 49*4882a593Smuzhiyun """ Print a list of strings prepended with a tab. """ 50*4882a593Smuzhiyun for l in cmdlist: 51*4882a593Smuzhiyun if (type(l) == list): 52*4882a593Smuzhiyun print("\t" + str(l[0])) 53*4882a593Smuzhiyun else: 54*4882a593Smuzhiyun print("\t" + str(l)) 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun 57*4882a593Smuzhiyundef print_sll(items): 58*4882a593Smuzhiyun print("\n".join(str(s) for s in items)) 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun 61*4882a593Smuzhiyundef print_test_case(tcase): 62*4882a593Smuzhiyun """ Pretty-printing of a given test case. """ 63*4882a593Smuzhiyun print('\n==============\nTest {}\t{}\n'.format(tcase['id'], tcase['name'])) 64*4882a593Smuzhiyun for k in tcase.keys(): 65*4882a593Smuzhiyun if (isinstance(tcase[k], list)): 66*4882a593Smuzhiyun print(k + ":") 67*4882a593Smuzhiyun print_list(tcase[k]) 68*4882a593Smuzhiyun else: 69*4882a593Smuzhiyun if not ((k == 'id') or (k == 'name')): 70*4882a593Smuzhiyun print(k + ": " + str(tcase[k])) 71