Newer
Older
sqlmarker / Unit_testing / Reporter.php
<?php

abstract class Reporter
{
	// 0 == no output
	// 1 == brief output (students?)
	// 2 == verbose output (marking)
	// 3 == debug output
	const VERBOSITY_NONE    = 0;
	const VERBOSITY_STUDENT = 1;
	const VERBOSITY_STAFF   = 2;
	const VERBOSITY_DEBUG   = 3;
	
	private $verbosity      = self::VERBOSITY_NONE;
	
	const STATUS_PASS		= 'PASSED';
	const STATUS_SKIPPED	= 'SKIPPED';
	const STATUS_INCOMPLETE	= 'INCOMPLETE';
	const STATUS_FAILURE	= 'FAILED';
	const STATUS_ERROR		= 'ERROR';
	const STATUS_WARNING	= 'WARNING';
	const STATUS_NOTE		= 'NOTE';
	const STATUS_TEST		= 'TEST';
	const STATUS_DEBUG      = 'DEBUG';
	
	function __construct( $verbosity )
	{
		$this->verbosity = $verbosity;
	}
	
	public static function pluralise( $count, $oneText, $manyText )
	{
		return ( abs( $count ) !== 1 ) ? $manyText : $oneText;
	}
	
	public function setVerbosity( $newVerbosity )
	{
		$this->verbosity = $newVerbosity;
	}
	
	public function getVerbosity()
	{
		return $this->verbosity;
	}
	
	/**
	 *	$statusText is one of: PASSED, FAILED, ERROR, INCOMPLETE, SKIPPED, WARNING, NOTE, MISC, ...?
	 *	$reportText is a printf-style string (although we actually use vprintf because of the array)
	 *	$printfArguments is an array of arguments to $reportText
	 */
	abstract public function report( $statusText, $reportText, $printfArguments = null );
	
	abstract public function hr();
}

?>