Skip to content

Commit a448e31

Browse files
caoglishblakeembrey
authored andcommitted
Update some phpunit test cases (blakeembrey#178)
1 parent 6156b60 commit a448e31

File tree

3 files changed

+58
-20
lines changed

3 files changed

+58
-20
lines changed

solutions/php/factorial.php

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,36 @@
11
<?php
22

3-
// Iterative solution.
4-
function factorial ($number) {
3+
// Iterative solution.
4+
function factorial($number)
5+
{
56
$result = 1;
67

78
for ($i = 1; $i <= $number; $i++) {
8-
$result *= $i;
9+
$result *= $i;
910
}
1011

1112
return $result;
12-
}
13+
}
1314

14-
// Iterative using a reverse loop.
15-
function factorialReverse ($number) {
15+
// Iterative using a reverse loop.
16+
function factorialReverse($number)
17+
{
1618
$result = 1;
1719

1820
while ($number != 1) {
19-
$result *= $number;
20-
$number--;
21+
$result *= $number;
22+
$number--;
2123
}
2224

2325
return $result;
24-
}
26+
}
2527

26-
// Recursive solution.
27-
function factorialRecursive ($number) {
28+
// Recursive solution.
29+
function factorialRecursive($number)
30+
{
2831
if ($number == 1) {
29-
return 1;
32+
return 1;
3033
}
3134

3235
return $number * factorialRecursive($number - 1);
33-
}
34-
35-
?>
36+
}

tests/php/IntegerLengthTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
use PHPUnit\Framework\TestCase;
3+
4+
require_once 'solutions/php/integer-length.php';
5+
6+
class IntegerLengthTest extends TestCase
7+
{
8+
public function test_IntegerLength()
9+
{
10+
$this->assertEquals(1, IntegerLength(1));
11+
$this->assertEquals(2, IntegerLength(22));
12+
$this->assertEquals(3, IntegerLength(333));
13+
$this->assertEquals(10, IntegerLength(1234567890));
14+
15+
}
16+
}

tests/php/factorialTest.php

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,31 @@ class FactorialTest extends TestCase
77
{
88
public function test_factorial()
99
{
10-
$this->assertEquals(1, factorial(1));
11-
$this->assertEquals(2, factorial(2));
12-
$this->assertEquals(6, factorial(3));
13-
$this->assertEquals(120, factorial(5));
14-
$this->assertEquals(2432902008176640000, factorial(20));
10+
$this->verifyFactorial("factorial");
11+
}
12+
13+
public function test_factorialReverse()
14+
{
15+
$this->verifyFactorial("factorialReverse");
16+
}
17+
18+
public function test_factorialRecursive()
19+
{
20+
$this->verifyFactorial("factorialRecursive");
21+
}
22+
23+
private function verifyFactorial($fn)
24+
{
25+
$testDataMap = [
26+
["input" => 1, "expect" => 1],
27+
["input" => 2, "expect" => 2],
28+
["input" => 3, "expect" => 6],
29+
["input" => 5, "expect" => 120],
30+
["input" => 20, "expect" => 2432902008176640000],
31+
];
32+
33+
foreach ($testDataMap as $data) {
34+
$this->assertEquals($data["expect"], call_user_func($fn, $data["input"]));
35+
}
1536
}
1637
}

0 commit comments

Comments
 (0)