Skip to content

Commit 9ba100f

Browse files
authored
Add purpose to each test and improvements (#16)
* Add purpose to each test * Improve tests
1 parent a2e2215 commit 9ba100f

File tree

2 files changed

+37
-40
lines changed

2 files changed

+37
-40
lines changed

tests/LuhnAlgorithmTest.php

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,67 +46,65 @@ public function setUp()
4646
/**
4747
* @dataProvider provideIsValid_success
4848
*/
49-
public function testIsValid_success($number, $expected)
49+
public function testIsValid_success($number, $expected, $purpose)
5050
{
51-
$this->assertEquals($expected, $this->luhn->isValid($number));
51+
$this->assertEquals($expected, $this->luhn->isValid($number), $purpose);
5252
}
5353

5454
public function provideIsValid_success()
5555
{
5656
return [
57-
[new Number('12345', 5), true],
58-
[new Number('410321920', 2), true],
59-
[new Number('3199723370002', 0), true],
60-
[new Number('8914800000397416568', 5), true],
61-
[new Number('12345', 6), false],
57+
[new Number('12345', 5), true, "Valid number"],
58+
[new Number('0', 0), true, "Zero"],
59+
[new Number('92233720368547758072', 8), true, "Larger than INT_MAX"],
60+
[new Number('12345', 6), false, "Invalid number"],
6261
];
6362
}
6463

6564
/**
6665
* @dataProvider provideIsValid_failure
6766
*/
68-
public function testIsValid_failure($number, $exception)
67+
public function testIsValid_failure($number, $exception, $purpose)
6968
{
70-
$this->expectException($exception);
69+
$this->expectException($exception, $purpose);
7170
$this->luhn->isValid($number);
7271
}
7372

7473
public function provideIsValid_failure()
7574
{
7675
return [
77-
[new Number(123, null), \InvalidArgumentException::class],
76+
[new Number(123, null), \InvalidArgumentException::class, "Invalid argument"],
7877
];
7978
}
8079

8180
/**
8281
* @dataProvider provideCalcChecksum_success
8382
*/
84-
public function testCalcChecksum_success($number, $expected)
83+
public function testCalcChecksum_success($number, $expected, $purpose)
8584
{
86-
$this->assertEquals($expected, $this->luhn->calcChecksum($number));
85+
$this->assertEquals($expected, $this->luhn->calcChecksum($number), $purpose);
8786
}
8887

8988
public function provideCalcChecksum_success()
9089
{
9190
return [
92-
[new Number(3199723370002), 50],
91+
[new Number(3199723370002), 50, "Valid checksum"],
9392
];
9493
}
9594

9695
/**
9796
* @dataProvider provideCalcCheckDigit_success
9897
*/
99-
public function testCalcCheckDigit_success($number, $expected)
98+
public function testCalcCheckDigit_success($number, $expected, $purpose)
10099
{
101100
$this->assertEquals($expected, $this->luhn->calcCheckDigit($number));
102101
}
103102

104103
public function provideCalcCheckDigit_success()
105104
{
106105
return [
107-
[new Number(12345), 5],
108-
[new Number(410321920), 2],
109-
[new Number(3199723370002), 0],
106+
[new Number(12345), 5, "Valid number"],
107+
[new Number(559114884), 5, "Swedish company organization ID"],
110108
];
111109
}
112110
}

tests/NumberTest.php

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,87 +33,86 @@ class NumberTest extends TestCase
3333
/**
3434
* @dataProvider provideFromString_success
3535
*/
36-
public function testFromString_success($number, $expected)
36+
public function testFromString_success($number, $expected, $purpose)
3737
{
3838
$this->assertEquals($expected, Number::fromString($number));
3939
}
4040

4141
public function provideFromString_success()
4242
{
4343
return [
44-
["410321-9202", new Number('410321920', 2)],
45-
[4103219202, new Number('410321920', 2)],
46-
['89148000003974165685', new Number('8914800000397416568', 5)],
47-
['abc123', new Number('12', 3)],
48-
// Use any number that is larger then PHP_INT_MAX.
49-
[((string) PHP_INT_MAX).'21', new Number(((string) PHP_INT_MAX).'2', 1)],
44+
["410321-9202", new Number('410321920', 2), "String"],
45+
[4103219202, new Number('410321920', 2), "Integer"],
46+
['89148000003974165685', new Number('8914800000397416568', 5), "Large number"],
47+
['abc123', new Number('12', 3), "Character in string"],
48+
['922337203685477580721', new Number('92233720368547758072', 1), "Larger than INT_MAX"],
5049
];
5150
}
5251

5352
/**
5453
* @dataProvider provideFromString_fail
5554
*/
56-
public function testFromString_fail($number, $expected)
55+
public function testFromString_fail($number, $expected, $purpose)
5756
{
58-
$this->expectException($expected);
57+
$this->expectException($expected, $purpose);
5958
Number::fromString($number);
6059
}
6160

6261
public function provideFromString_fail()
6362
{
6463
return [
65-
['', \InvalidArgumentException::class],
66-
['xyz ', \InvalidArgumentException::class],
64+
['', \InvalidArgumentException::class, "Empty string"],
65+
['xyz ', \InvalidArgumentException::class, "Invalid string"],
6766
];
6867
}
6968

7069
/**
7170
* @dataProvider provideToString_success
7271
*/
73-
public function testToString_success($number, $expected)
72+
public function testToString_success($number, $expected, $purpose)
7473
{
75-
$this->assertEquals($expected, (string) $number);
74+
$this->assertEquals($expected, (string) $number, $purpose);
7675
}
7776

7877
public function provideToString_success()
7978
{
8079
return [
81-
[new Number(12345, 5), "123455"]
80+
[new Number(12345, 5), "123455", "Valid number"]
8281
];
8382
}
8483

8584
/**
8685
* @dataProvider provideNew_fail
8786
*/
88-
public function testNew_fail($number, $checkDigit, $expected)
87+
public function testNew_fail($number, $checkDigit, $expected, $purpose)
8988
{
90-
$this->expectException($expected);
89+
$this->expectException($expected, $purpose);
9190
new Number($number, $checkDigit);
9291
}
9392

9493
public function provideNew_fail()
9594
{
9695
return [
97-
['abc123', 1, \InvalidArgumentException::class],
98-
['123 ', null, \InvalidArgumentException::class],
96+
['abc123', 1, \InvalidArgumentException::class, "Invalid number"],
97+
['123 ', null, \InvalidArgumentException::class, "Whitespace"],
9998
];
10099
}
101100

102101
/**
103102
* @dataProvider provideProperties
104103
*/
105-
public function testProperties($input, $checkDigit)
104+
public function testProperties($input, $checkDigit, $purpose)
106105
{
107106
$number = new Number($input, $checkDigit);
108-
$this->assertEquals($input, $number->getNumber());
109-
$this->assertEquals($checkDigit, $number->getCheckDigit());
107+
$this->assertEquals($input, $number->getNumber(), $purpose);
108+
$this->assertEquals($checkDigit, $number->getCheckDigit(), $purpose);
110109
}
111110

112111
public function provideProperties()
113112
{
114113
return [
115-
[123, 1],
116-
[123, null],
114+
[123, 1, "Valid number and checkdigit"],
115+
[123, null, "Valid number and checkdigit (null)"],
117116
];
118117
}
119118
}

0 commit comments

Comments
 (0)