static TestResults testTrainableFunction(O function, L trainingParams, L testParams, O... _) { new TestResults results; O trained = callF(function, trainingParams); if (boolPar(_, 'printTrainedStruct)) printStruct(trained); for (O key, O value : listParamsToMap(testParams)) { try { O out = callF(trained, key); results.add(testResult_eq_verbose(out, value)); } catch e { results.add(testResult_error(e)); } } ret results; }