summaryrefslogtreecommitdiff
path: root/scripts/dev/generate-phpt/src/testcase/gtVariationTestCaseFunction.php
blob: 3545e5c27288b663baac52c575d7ce8dc3031934 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php

/**
 * Class for variation tests for a PHP function
 */
class gtVariationTestCaseFunction extends gtVariationTestCase {

  protected $argumentNumber;
  protected $variationData;
  protected $testCase;

  public function __construct($opt) {
    $this->optionalSections = $opt;
  }
  /**
   * Set data neede to construct variation tests
   *
   * @param gtfunction $function
   * @param string $argumentNumber
   * @param string $variationData
   */
  public function setUp(gtfunction $function, $argumentNumber, $variationData) {
    $this->subject = $function;
    $this->argumentNumber = $argumentNumber;
    $this->variationData = $variationData;

  }


  /**
   * Constructs  the test case as a array of strings
   *
   */
  public function constructTestCase() {
    $this->constructCommonHeaders();

    $this->addVariationEcho();

    $this->constructSubjectCalls();

    $this->constructCommonClosing();

  }
  public function testHeader() {
    $this->testCase[] = "--TEST--";
    $this->testCase[] = "Test function ".$this->subject->getName()."() by substituting argument ".$this->argumentNumber." with ".$this->variationData." values.";
  }


  public function subjectCalls() {
    $this->testCase = gtCodeSnippet::append('loopStart', $this->testCase);

    // Construct the argument list to pass to the function being tested
    $argumentList = explode(",", $this->subject->getMaximumArgumentList());
    $argumentList[$this->argumentNumber -1 ] = "\$var ";
    $list = implode(", ", $argumentList);


    $this->testCase[] = "  var_dump(".$this->subject->getName()."( ".$list." ) );";
    $this->testCase = gtCodeSnippet::append('loopClose', $this->testCase);
  }

}
?>