Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Path: blob/master/C2 - Improving Deep Neural Networks Hyperparameter tuning, Regularization and Optimization/Week 3/test_utils.py
Views: 4804
import numpy as np123def datatype_check(expected_output, target_output, error):4success = 05if isinstance(target_output, dict):6for key in target_output.keys():7try:8success += datatype_check(expected_output[key],9target_output[key], error)10except:11print("Error: {} in variable {}. Got {} but expected type {}".format(error,12key, type(target_output[key]), type(expected_output[key])))13if success == len(target_output.keys()):14return 115else:16return 017elif isinstance(target_output, tuple) or isinstance(target_output, list):18for i in range(len(target_output)):19try:20success += datatype_check(expected_output[i],21target_output[i], error)22except:23print("Error: {} in variable {}, expected type: {} but expected type {}".format(error,24i, type(target_output[i]), type(expected_output[i])))25if success == len(target_output):26return 127else:28return 02930else:31assert isinstance(target_output, type(expected_output))32return 1333435def equation_output_check(expected_output, target_output, error):36success = 037if isinstance(target_output, dict):38for key in target_output.keys():39try:40success += equation_output_check(expected_output[key],41target_output[key], error)42except:43print("Error: {} for variable {}.".format(error,44key))45if success == len(target_output.keys()):46return 147else:48return 049elif isinstance(target_output, tuple) or isinstance(target_output, list):50for i in range(len(target_output)):51try:52success += equation_output_check(expected_output[i],53target_output[i], error)54except:55print("Error: {} for variable in position {}.".format(error, i))56if success == len(target_output):57return 158else:59return 06061else:62if hasattr(target_output, 'shape'):63np.testing.assert_array_almost_equal(64target_output, expected_output)65else:66assert target_output == expected_output67return 1686970def shape_check(expected_output, target_output, error):71success = 072if isinstance(target_output, dict):73for key in target_output.keys():74try:75success += shape_check(expected_output[key],76target_output[key], error)77except:78print("Error: {} for variable {}.".format(error, key))79if success == len(target_output.keys()):80return 181else:82return 083elif isinstance(target_output, tuple) or isinstance(target_output, list):84for i in range(len(target_output)):85try:86success += shape_check(expected_output[i],87target_output[i], error)88except:89print("Error: {} for variable {}.".format(error, i))90if success == len(target_output):91return 192else:93return 09495else:96if hasattr(target_output, 'shape'):97assert target_output.shape == expected_output.shape98return 199100101def single_test(test_cases, target):102success = 0103for test_case in test_cases:104try:105if test_case['name'] == "datatype_check":106assert isinstance(target(*test_case['input']),107type(test_case["expected"]))108success += 1109if test_case['name'] == "equation_output_check":110assert np.allclose(test_case["expected"],111target(*test_case['input']))112success += 1113if test_case['name'] == "shape_check":114assert test_case['expected'].shape == target(115*test_case['input']).shape116success += 1117except:118print("Error: " + test_case['error'])119120if success == len(test_cases):121print("\033[92m All tests passed.")122else:123print('\033[92m', success, " Tests passed")124print('\033[91m', len(test_cases) - success, " Tests failed")125raise AssertionError(126"Not all tests were passed for {}. Check your equations and avoid using global variables inside the function.".format(target.__name__))127128129def multiple_test(test_cases, target):130success = 0131for test_case in test_cases:132try:133target_answer = target(*test_case['input'])134if test_case['name'] == "datatype_check":135success += datatype_check(test_case['expected'],136target_answer, test_case['error'])137if test_case['name'] == "equation_output_check":138success += equation_output_check(139test_case['expected'], target_answer, test_case['error'])140if test_case['name'] == "shape_check":141success += shape_check(test_case['expected'],142target_answer, test_case['error'])143except:144print("Error: " + test_case['error'])145146if success == len(test_cases):147print("\033[92m All tests passed.")148else:149print('\033[92m', success, " Tests passed")150print('\033[91m', len(test_cases) - success, " Tests failed")151raise AssertionError(152"Not all tests were passed for {}. Check your equations and avoid using global variables inside the function.".format(target.__name__))153154155