Skip to content

Commit 8428daa

Browse files
committed
Merge pull request #6 from xi-project/remove-state-from-luhn
Removed state from Luhn
2 parents 329ebcc + 22454af commit 8428daa

File tree

4 files changed

+28
-25
lines changed

4 files changed

+28
-25
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
composer.phar
22
composer.lock
33
tests/phpunit.xml
4-
vendor
4+
vendor
5+
.idea

README.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,27 @@
1-
# Luhn
1+
# Xi Algorithm
2+
3+
## Luhn
4+
5+
Usage:
26

37
```
4-
$luhn = new Luhn(1234);
5-
$luhn->generate();
8+
use Xi\Algorithm\Luhn;
9+
10+
$luhn = new Luhn();
11+
$luhn->generate(123); // 1230
612
```
713

8-
# Tests
14+
## Running the tests
15+
16+
No dependencies to other libraries exist, but in order to generate an autoloader
17+
first run
918

10-
No dependencies to other libraries exist, but in order to generate an autoloader and run tests, first run
1119
```
1220
composer.phar install --dev
1321
```
22+
23+
and then run the tests with
24+
25+
```
26+
phpunit -c tests
27+
```

library/Xi/Algorithm/Luhn.php

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,20 @@
44

55
class Luhn
66
{
7-
/**
8-
* @var integer
9-
*/
10-
private $number;
11-
12-
/**
13-
* @param integer $number
14-
*/
15-
public function __construct($number)
16-
{
17-
$this->number = $number;
18-
}
19-
207
/**
218
* Returns the given number with luhn algorithm applied.
229
*
2310
* For example 456 becomes 4564.
2411
*
12+
* @param integer $number
2513
* @return integer
2614
*/
27-
public function generate()
15+
public function generate($number)
2816
{
2917
$stack = 0;
30-
$number = str_split(strrev($this->number), 1);
18+
$digits = str_split(strrev($number), 1);
3119

32-
foreach ($number as $key => $value) {
20+
foreach ($digits as $key => $value) {
3321
if ($key % 2 === 0) {
3422
$value = array_sum(str_split($value * 2, 1));
3523
}
@@ -43,6 +31,6 @@ public function generate()
4331
$stack -= 10;
4432
}
4533

46-
return (int) (implode('', array_reverse($number)) . abs($stack));
34+
return (int) (implode('', array_reverse($digits)) . abs($stack));
4735
}
4836
}

tests/Xi/Tests/Algorithm/LuhnTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ class LuhnTest extends \PHPUnit_Framework_TestCase
1818
*/
1919
public function generatesLuhnChecksum($number, $expected)
2020
{
21-
$luhn = new Luhn($number);
22-
$luhnedNumber = $luhn->generate();
21+
$luhn = new Luhn();
22+
$luhnedNumber = $luhn->generate($number);
2323

2424
$this->assertInternalType('integer', $luhnedNumber);
2525
$this->assertEquals($expected, $luhnedNumber);

0 commit comments

Comments
 (0)