summaryrefslogtreecommitdiff
path: root/scripts/dev/generate-phpt/src/gtTestSubject.php
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/dev/generate-phpt/src/gtTestSubject.php')
-rw-r--r--scripts/dev/generate-phpt/src/gtTestSubject.php166
1 files changed, 166 insertions, 0 deletions
diff --git a/scripts/dev/generate-phpt/src/gtTestSubject.php b/scripts/dev/generate-phpt/src/gtTestSubject.php
new file mode 100644
index 0000000..ccf3caa
--- /dev/null
+++ b/scripts/dev/generate-phpt/src/gtTestSubject.php
@@ -0,0 +1,166 @@
+<?php
+abstract class gtTestSubject {
+
+ protected $optionalArgumentNames;
+ protected $mandatoryArgumentNames;
+
+ protected $extraArgumentList = '';
+ protected $shortArgumentList = '';
+
+ protected $allowedArgumentLists;
+
+ protected $maximumArgumentList;
+
+ protected $initialisationStatements;
+
+
+ /** Return the list of all mandatory argument names
+ *
+ * @return array
+ */
+ public function getMandatoryArgumentNames() {
+ return $this->mandatoryArgumentNames;
+ }
+
+
+ /**
+ * Return the list of all optional argument names
+ *
+ * @return array
+ */
+ public function getOptionalArgumentNames() {
+ return $this->optionalArgumentNames;
+ }
+
+ public function setArgumentLists() {
+ $this->setValidArgumentLists();
+ $this->setExtraArgumentList();
+ $this->setShortArgumentList();
+ }
+
+ /**
+ * Set the argument list to call the subject with. Adds one extra argument.
+ *
+ */
+ public function setExtraArgumentList() {
+ if(count ($this->mandatoryArgumentNames) > 0) {
+ for( $i = 0; $i < count( $this->mandatoryArgumentNames ); $i++) {
+ $this->extraArgumentList .= "\$".$this->mandatoryArgumentNames[$i].", ";
+ }
+ }
+
+ if(count ($this->optionalArgumentNames) > 0) {
+ for( $i = 0; $i < count( $this->optionalArgumentNames ); $i++) {
+ $this->extraArgumentList .= "\$".$this->optionalArgumentNames[$i].", ";
+ }
+ }
+
+ $this->extraArgumentList= $this->extraArgumentList. "\$extra_arg";
+ }
+
+
+ /**
+ * Return the list of arguments as it appears in the function call
+ *
+ * @return string - list of arguments
+ */
+ public function getExtraArgumentList() {
+ return $this->extraArgumentList;
+ }
+
+
+ /**
+ * Set the list of function arguments to be one less that the number of mandatory arguments
+ *
+ */
+ public function setShortArgumentList() {
+
+ if(count ($this->mandatoryArgumentNames) > 0) {
+ for( $i = 0; $i < count( $this->mandatoryArgumentNames ) - 1; $i++) {
+ $this->shortArgumentList .= "\$".$this->mandatoryArgumentNames[$i].", ";
+ }
+ $this->shortArgumentList = substr($this->shortArgumentList, 0, -2);
+ }
+ }
+
+
+ /**
+ * Return the short list of arguments
+ *
+ * @return string - list of arguments
+ */
+ public function getShortArgumentList() {
+ return $this->shortArgumentList;
+ }
+
+
+ /**
+ * Construct the list of all possible ways to call the subject (function or method)
+ *
+ */
+ public function setValidArgumentLists() {
+ $this->allowedArgumentLists[0] = '';
+ if(count ($this->mandatoryArgumentNames) > 0) {
+ for( $i = 0; $i < count( $this->mandatoryArgumentNames ); $i++) {
+ $this->allowedArgumentLists[0] .= "\$".$this->mandatoryArgumentNames[$i].", ";
+ }
+ }
+
+ if(count ($this->optionalArgumentNames) > 0) {
+ for( $i = 0; $i < count( $this->optionalArgumentNames ); $i++) {
+ $this->allowedArgumentLists[] = $this->allowedArgumentLists[$i]."\$".$this->optionalArgumentNames[$i].", ";
+ $this->allowedArgumentLists[$i] = substr ($this->allowedArgumentLists[$i], 0, -2);
+ }
+ }
+
+ $this->allowedArgumentLists[count($this->allowedArgumentLists) -1 ] = substr($this->allowedArgumentLists[count($this->allowedArgumentLists) -1 ], 0, -2);
+ }
+
+
+ /**
+ * Return the array of all possible sets of method/function arguments
+ *
+ * @return unknown
+ */
+ public function getValidArgumentLists() {
+ return $this->allowedArgumentLists;
+ }
+
+
+ /**
+ * Returns the argument list with the greatest possible number of arguments.
+ *
+ * @return string
+ */
+ public function getMaximumArgumentList() {
+ return end($this->allowedArgumentLists);
+ }
+
+
+ /**
+ * Write initialisation statemenst for all the variables that might be used
+ *
+ */
+ public function setInitialisationStatements() {
+ if(count ($this->mandatoryArgumentNames) > 0) {
+ foreach( $this->mandatoryArgumentNames as $name) {
+ $this->initialisationStatements[] = "\$".$name." = ";
+ }
+ }
+ if(count ($this->optionalArgumentNames) > 0) {
+ foreach( $this->optionalArgumentNames as $name) {
+ $this->initialisationStatements[] = "\$".$name." = ";
+ }
+ }
+ }
+
+ /**
+ * Return the initialisation statements
+ *
+ * @return unknown
+ */
+ public function getInitialisationStatements() {
+ return $this->initialisationStatements;
+ }
+}
+?>