summaryrefslogtreecommitdiff
path: root/scripts/dev/generate-phpt/src/gtMethod.php
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/dev/generate-phpt/src/gtMethod.php')
-rw-r--r--scripts/dev/generate-phpt/src/gtMethod.php139
1 files changed, 139 insertions, 0 deletions
diff --git a/scripts/dev/generate-phpt/src/gtMethod.php b/scripts/dev/generate-phpt/src/gtMethod.php
new file mode 100644
index 0000000..820d7e0
--- /dev/null
+++ b/scripts/dev/generate-phpt/src/gtMethod.php
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * Class for method under test (see gtFunction for non-OO tests)
+ */
+class gtMethod extends gtTestSubject {
+
+ private $className;
+ private $methodName;
+ private $constructorArgumentNames;
+ private $constructorArgumentList = '';
+ private $constructorInitialisationStatements;
+
+
+
+ /**
+ * Construct gtMethod object from the class and method names
+ *
+ * @param string $className
+ * @param string $methodName
+ */
+ public function __construct($className, $methodName) {
+ $this->className = $className;
+ $this->methodName = $methodName;
+ }
+
+
+ /**
+ * Set the names of the class constructor arguments. Take only mandatory argument names.
+ *
+ */
+ public function setConstructorArgumentNames() {
+ $reflectionClass = new ReflectionClass($this->className);
+ $constructor = $reflectionClass->getConstructor();
+ foreach($constructor->getParameters() as $i => $param) {
+ //if(!$param->isOptional()) {
+ $this->constructorArgumentNames[] = $param->getName();
+ //}
+ }
+ }
+
+
+ /**
+ * Set the names of the mandatory and optional arguments to the method
+ *
+ */
+ public function setArgumentNames() {
+
+ $methodClass = new reflectionMethod($this->className, $this->methodName);
+ $parameters = $methodClass->getParameters();
+
+ foreach ($methodClass->getParameters() as $i => $param) {
+ if($param->isOptional()) {
+ $this->optionalArgumentNames[] = $param->getName();
+ } else {
+ $this->mandatoryArgumentNames[] = $param->getName();
+ }
+
+ }
+ }
+
+
+ /**
+ * Return the list of constructor argument names
+ *
+ * @return array
+ */
+ public function getConstructorArgumentNames() {
+ return $this->constructorArgumentNames;
+ }
+
+ /**
+ * Return the name of the method
+ *
+ * @return string
+ */
+ public function getName() {
+ return $this->methodName;
+ }
+
+
+ /**
+ * Return the name of the class
+ *
+ * @return string
+ */
+ public function getClassName() {
+ return $this->className;
+ }
+
+ /**
+ * Set the list of arguments to be passed to the constructor
+ *
+ */
+ public function setConstructorArgumentList() {
+ if(count ($this->constructorArgumentNames) > 0) {
+
+ for( $i = 0; $i < count( $this->constructorArgumentNames ); $i++) {
+ $this->constructorArgumentList .= "\$".$this->constructorArgumentNames[$i].", ";
+ }
+ $this->constructorArgumentList = substr($this->constructorArgumentList, 0, -2);
+ }
+ }
+
+
+ /**
+ * Return the list of the arguments to be passed to the constructor
+ *
+ * @return string
+ */
+ public function getConstructorArgumentList() {
+ return $this->constructorArgumentList;
+ }
+
+
+ /**
+ * Set up the source statements that initialise constructor arguments;
+ *
+ */
+ public function setConstructorInitStatements() {
+ if(count ($this->constructorArgumentNames) > 0) {
+ foreach( $this->constructorArgumentNames as $name) {
+ $this->constructorInitialisationStatements[] = "\$".$name." = ";
+ }
+ }
+
+ }
+
+
+ /**
+ * Return the constructor initialisation statements
+ *
+ * @return array
+ */
+ public function getConstructorInitStatements() {
+ return $this->constructorInitialisationStatements;
+ }
+}
+?> \ No newline at end of file