summaryrefslogtreecommitdiff
path: root/test/HTML5/DataHarness.php
diff options
context:
space:
mode:
authorTechnosophos <[email protected]>2013-04-02 16:44:02 -0500
committerTechnosophos <[email protected]>2013-04-02 16:44:02 -0500
commit8a5d21165697440ae80756d9b8acf56dd682d0fc (patch)
tree27305660f874c168308418fe3a7d6bf0c3aa3de6 /test/HTML5/DataHarness.php
parent91d1684acf50e0f6b58c877765ab9863e650a33a (diff)
Initial add of html5lib.
Diffstat (limited to 'test/HTML5/DataHarness.php')
-rw-r--r--test/HTML5/DataHarness.php48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/HTML5/DataHarness.php b/test/HTML5/DataHarness.php
new file mode 100644
index 0000000..844b1fc
--- /dev/null
+++ b/test/HTML5/DataHarness.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Modified test-case supertype for running tests that are not
+ * test method based, but based off of test data that resides in
+ * files.
+ */
+SimpleTest::ignore('HTML5_DataHarness');
+abstract class HTML5_DataHarness extends UnitTestCase
+{
+ /**
+ * Filled in by HTML5_TestData::generateTestCases()
+ */
+ protected $filename;
+ private $tests;
+ /**
+ * Invoked by the runner, it is the function responsible for executing
+ * the test and delivering results.
+ * @param $test Some easily usable representation of the test
+ */
+ abstract public function invoke($test);
+ /**
+ * Returns a list of tests that can be executed. The list members will
+ * be passed to invoke(). Return an iterator if you don't want to load
+ * all test into memory
+ */
+ abstract public function getDataTests();
+ /**
+ * Returns a description of the test
+ */
+ abstract public function getDescription($test);
+ public function getTests() {
+ $this->tests = $this->getDataTests();
+ // 1-indexed, to be consistent with Python
+ $ret = array();
+ for ($i = 1; $i <= count($this->tests); $i++) {
+ $ret[] = "test_$i";
+ }
+ return $ret;
+ }
+ /**
+ * Emulates our test functions
+ */
+ public function __call($name, $args) {
+ list($test, $i) = explode("_", $name);
+ $this->invoke($this->tests[$i-1]);
+ }
+}