summaryrefslogtreecommitdiff
path: root/scripts/dev/generate-phpt/src/testcase/gtTestCase.php
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/dev/generate-phpt/src/testcase/gtTestCase.php')
-rw-r--r--scripts/dev/generate-phpt/src/testcase/gtTestCase.php230
1 files changed, 230 insertions, 0 deletions
diff --git a/scripts/dev/generate-phpt/src/testcase/gtTestCase.php b/scripts/dev/generate-phpt/src/testcase/gtTestCase.php
new file mode 100644
index 0000000..cc5e19a
--- /dev/null
+++ b/scripts/dev/generate-phpt/src/testcase/gtTestCase.php
@@ -0,0 +1,230 @@
+<?php
+
+/**
+ * Class for all test cases
+ */
+abstract class gtTestCase {
+
+
+ /**
+ * The subject of the test, may be either a function (gtFunction) or a method (gtMethod)
+ *
+ * @var gtMethod or gtFunction
+ */
+ protected $subject;
+
+
+ /**
+ * Arry of strings containing the test case
+ *
+ * @var array
+ */
+ protected $testCase;
+
+
+ /**
+ * Object containing the optional sections that may be added to the test case
+ *
+ * @var gtOptionalSections
+ */
+ protected $optionalSections;
+
+
+ /**
+ * Convert test case from array to string
+ *
+ * @return string
+ */
+ public function toString() {
+ $testCaseString = "";
+ foreach($this->testCase as $line) {
+ $testCaseString .= $line."\n";
+ }
+ return $testCaseString;
+ }
+
+
+
+ /**
+ * Returns test case as a array
+ *
+ * @return array
+ */
+ public function getTestCase() {
+ return $this->testCase;
+ }
+
+
+ /**
+ * Construct the common headers (title, file section..) of the test case
+ *
+ */
+ public function ConstructCommonHeaders() {
+ $this->testHeader();
+
+ if($this->optionalSections->hasSkipif()) {
+ $this->addSkipif();
+ }
+
+ if($this->optionalSections->hasIni()) {
+ $this->addIni();
+ }
+
+ $this->fileOpening();
+ }
+
+
+ /**
+ * Construct the common closing statements (clean, done, EXPECTF...)
+ *
+ */
+ public function ConstructCommonClosing() {
+ $this->fileClosing();
+
+ if ($this->optionalSections->hasDone()) {
+ $this->addDone();
+ }
+
+ if ($this->optionalSections->hasClean()) {
+ $this->addClean();
+ }
+
+ $this->addExpectf();
+ }
+
+ /**
+ * Start the FILE section of the test
+ *
+ */
+ public function fileOpening() {
+ $this->testCase[] = "--FILE--";
+ $this->testCase[] = "<?php";
+ $this->testCase = gtCodeSnippet::appendBlankLines(2, $this->testCase );
+ }
+
+
+ /**
+ * Add contructor argument initialisation to test case
+ *
+ */
+ public function constructorArgInit() {
+ $conStatements = $this->subject->getConstructorInitStatements();
+ foreach($conStatements as $statement) {
+ $this->testCase[] = $statement;
+ }
+ }
+
+
+ /**
+ * Create instance of class in the test case
+ *
+ */
+ public function constructorCreateInstance() {
+ $constructorList = $this->subject->getConstructorArgumentList();
+ $this->testCase[] = "\$class = new ".$this->subject->getClassName()."( ".$constructorList." );";
+ $this->testCase = gtCodeSnippet::appendBlankLines(2, $this->testCase );
+ }
+
+
+ /**
+ * Add function or method initilaisation statements to the test case
+ *
+ */
+ public function argInit() {
+ $statements = $this->subject->getInitialisationStatements();
+ foreach($statements as $statement) {
+ $this->testCase[] = $statement;
+ }
+ $this->testCase = gtCodeSnippet::appendBlankLines(2, $this->testCase );
+ }
+
+
+ /**
+ * Add FILE section closing tag to the test case
+ *
+ */
+ public function fileClosing() {
+ $this->testCase[] = "?>";
+ }
+
+
+ /**
+ * Add a skipif section to the test case
+ *
+ */
+ public function addSkipif() {
+ $this->testCase[] = "--SKIPIF--";
+ $this->testCase[] = "<?php";
+ if($this->optionalSections->hasSkipifKey()) {
+ $key = $this->optionalSections->getSkipifKey();
+ //test standard skipif sections
+ if($key == 'win') {
+ $this->testCase = gtCodeSnippet::append('skipifwin', $this->testCase);
+ }
+ if($key == 'notwin' ) {
+ $this->testCase = gtCodeSnippet::append('skipifnotwin', $this->testCase);
+ }
+
+ if($key == '64b' ) {
+ $this->testCase = gtCodeSnippet::append('skipif64b', $this->testCase);
+ }
+
+ if($key == 'not64b' ) {
+ $this->testCase = gtCodeSnippet::append('skipifnot64b', $this->testCase);
+ }
+ }
+
+ if($this->optionalSections->hasSkipifExt()) {
+ $ext = $this->optionalSections->getSkipifExt();
+ $this->testCase[] = "if (!extension_loaded('$ext')) die ('skip $ext extension not available in this build');";
+ }
+ $this->testCase[] = "?>";
+ }
+
+
+ /**
+ * Add an INI section to the test case
+ *
+ */
+ public function addIni() {
+ $this->testCase[] = "--INI--";
+ $this->testCase[] = "";
+ }
+
+
+ /**
+ * Add a clean section to the test case
+ *
+ */
+ public function addClean() {
+ $this->testCase[] = "--CLEAN--";
+ $this->testCase[] = "<?php";
+ $this->testCase[] = "?>";
+ }
+
+
+ /**
+ * Add a ===DONE=== statement to the test case
+ *
+ */
+ public function addDone() {
+ $this->testCase[] = "===DONE===";
+ }
+
+
+ /**
+ * Add an EXPECTF section
+ *
+ */
+ public function addExpectf() {
+ $this->testCase[] = "--EXPECTF--";
+ if ($this->optionalSections->hasDone() ){
+ $this->testCase[] = '===DONE===';
+ }
+ }
+
+ public function getOpt() {
+ return $this->optionalSections;
+ }
+}
+?>