<?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(); } ?>