 }
 
 /*
-	* cleans up the test name so they are more readable
-	*/
+ * 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.

	@param	expression	String containing CFML expression to evaluate
	@param	2..n		Optional. 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) {

				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("#expr# #reReplace(expr, "[([\])]", " ")#", " +=-*/%##")) {

					if (!structKeyExists(evaluatedTokens, token)) {

					evaluatedTokens[token] = true;
					tokenValue = "__INVALID__";

					if (!(isNumeric(token) or isBoolean(token))) {
							try {
								tokenValue = evaluate(token);
							} catch(expression e) {
							}
					}

					/*
						Format token value according to type
					*/
					if ((!isSimpleValue(tokenValue)) or (tokenValue neq "__INVALID__")) {

						if (isSimpleValue(tokenValue)) {
							if (!(isNumeric(tokenValue) or isBoolean(tokenValue))) {
								tokenValue ="'#tokenValue#'";
							}
						} else {
							if (isArray(tokenValue)) {
								tokenValue = "array of #arrayLen(tokenValue)# items";
							} else if (isStruct(tokenValue)) {
								tokenValue = "struct with #structCount(tokenValue)# members";
							} else if (IsCustomFunction(tokenValue)) {
								tokenValue = "UDF";
							}
						}
						message = message & newline & token & " = " & tokenValue;

}

/*
 * Cleans up the test path.
 */
public string function $cleanTestPath(required string path) {
	return ListChangeDelims(Replace(arguments.path, TESTING_FRAMEWORK_VARS.ROOT_TEST_PATH, ""), ".", ".");
}

/*
 * This resolves all the paths needed to run the tests.
 */
public struct function $resolvePaths(struct options={}) {

	local.rv = {};
