 }
 
 /*
-	* removes the base test directory from the test name to make them prettier and more readable
-	*/
+ * Removes the base test directory from the test name to make them prettier and more readable.
+ */
 public string function $cleanTestCase(
 	required string name,
 	string path=TESTING_FRAMEWORK_VARS.WHEELS_TESTS_BASE_COMPONENT_PATH

}

/*
	* cleans up the test name so they are more readable
	*/
public string function $cleanTestName(required string name) {
	local.rv = arguments.name;
	if (Find("_", local.rv)) {

	request["TESTING_FRAMEWORK_DEBUGGING"] = {};
}

/**
 * Called from a test function.
 * If expression evaluates to false, record a failure against the test.
 *
 * @expression String containing CFML expression to evaluate.
 * @2..n String(s) containing space-delimited list of variables to evaluate and include in the failure message to help determine cause of failed assertion.
 */
public void function assert(required string expression) {
	// Convert "yes" / "no" to true / false.
	arguments.expression = arguments.expression == "yes" ? true : arguments.expression;
	arguments.expression = arguments.expression == "no" ? false : arguments.expression;

	var token = "";
	var tokenValue = "";
	var message = "assert failed: #arguments.expression#";
	var newline = Chr(10) & Chr(13);
	var i = "";
	var evaluatedTokens = "";
	if (!Evaluate(arguments.expression)) {
		for (i in arguments) {
			local.expr = arguments[i];
			evaluatedTokens = {};
			// Double pass of expressions with different delimiters so that for expression "a(b) or c[d]", "a(b)", "c[d]", "b" and "d" are evaluated. Do not evaluate any expression more than once.
			for (token in ListToArray("#local.expr# #ReReplace(local.expr, "[([\])]", " ")#", " +=-*/%##")) {
				if (!StructKeyExists(evaluatedTokens, token)) {
					evaluatedTokens[token] = true;
					local.tokenValue = "__INVALID__";
					if (!(IsNumeric(token) || IsBoolean(token))) {
						try {
							local.tokenValue = Evaluate(token);
						} catch (any e) {}
					}
					// Format token value according to type.
					if ((!IsSimpleValue(local.tokenValue)) || (local.tokenValue != "__INVALID__")) {
						if (IsSimpleValue(local.tokenValue)) {
							if (!(IsNumeric(local.tokenValue) || IsBoolean(local.tokenValue))) {
								local.tokenValue = "'#local.tokenValue#'";
							}
						} else {
							if (isArray(local.tokenValue)) {
								local.tokenValue = "array of #arrayLen(local.tokenValue)# items";
							} else if (isStruct(local.tokenValue)) {
								local.tokenValue = "struct with #structCount(local.tokenValue)# members";
							} else if (IsCustomFunction(local.tokenValue)) {
								local.tokenValue = "UDF";
							}
						}
						message = message & newline & token & " = " & tokenValue;
