function validTest( test ) {
	var include,
		filter = config.filter,
		fullName = test.module + ": " + test.testName;

	if ( config.testNumber ) {
		return test.testNumber === config.testNumber;
	}

	if ( !filter ) {
		return true;
	}

	include = filter.charAt( 0 ) !== "!";
	if ( !include ) {
		filter = filter.slice( 1 );
	}

	// If the filter matches, we need to honour include
	if ( fullName.indexOf( filter ) !== -1 ) {
		return include;
	}

	// Otherwise, do the opposite
	return !include;
}
@deprecated: Created for backwards compatibility with test runner that set the hook function
into QUnit.{hook}, instead of invoking it and passing the hook function.
QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
Doing this allows us to tell if the following methods have been overwritten on the actual
QUnit object.