<?php
class SimpleSCoreTestTheme extends Themelet {
}

/** @private */
class SCoreReporter extends HtmlReporter {
	var $current_html = "";
	var $clear_modules = array();
	var $page;

	public function SCoreReporter(Page $page) {
		$this->page = $page;
		$this->_fails = 0;
	}

	function paintHeader($test_name) {
		// nowt
		//parent::paintHeader($test_name);
	}

	function paintFooter($test_name) {
		//parent::paintFooter($test_name);
		if($this->getFailCount() > 0) {
			$style = "background: red;";
		}
		else {
			$style = "background: green;";
		}
		$html = "<div style=\"padding: 4px; $style\">".
			$this->getPassCount() . " passes, " .
			$this->getFailCount() . " failures" .
			"<br>Passed modules: " . implode(", ", $this->clear_modules) .
			"</div>";
		$this->page->add_block(new Block("Results", $html, "main", 40));
	}

	function paintGroupStart($name, $size) {
		parent::paintGroupStart($name, $size);
		$this->current_html = "";
	}

	function paintGroupEnd($name) {
		$matches = array();
		if(preg_match("#ext/(.*)/test.php#", $name, $matches)) {
			$name = $matches[1];
			$link = "<a href=\"".make_link("test/$name")."\">Test only this extension</a>";
		}
		parent::paintGroupEnd($name);
		if($this->current_html == "") {
			$this->clear_modules[] = $name;
		}
		else {
			$this->current_html .= "<p>$link";
			$this->page->add_block(new Block($name, $this->current_html, "main", 50));
			$this->current_html = "";
		}
	}

	function paintFail($message) {
		//parent::paintFail($message);
		$this->_fails++; // manually do the grandparent behaviour

		$message = str_replace(getcwd(), "...", $message);
		$this->current_html .= "<p style='text-align: left;'><b>Fail</b>: $message";
	}
}
?>
