diff --git a/tests/luhn_verify.aer b/tests/luhn_verify.aer new file mode 100644 index 0000000..9dfe02b --- /dev/null +++ b/tests/luhn_verify.aer @@ -0,0 +1,44 @@ +class Luhn { + private string $number; + + string getNumber() { + return $this->number; + } + + void setNumber(string $number) { + $this->number = $number; + } + + bool validate() { + string $sum; + string $revNumber; + int $len; + + $revNumber = strrev($this->number); + $len = strlen($this->number); + for(int $i = 0; $i < $len; $i++) { + $sum += $i & 1 ? $revNumber[$i] * 2 : $revNumber[$i]; + } + return array_sum(str_split($sum)) % 10 === 0; + } +} + +class Program { + private const NUMBERS = {'3788803280', '6487308345', '5443489710530865', '5539266155200609', '4024007151066296', '4345234978'}; + + void main() { + int $i, $nums = sizeof($this->NUMBERS); + object $luhn = new Luhn(); + + while($i < $nums) { + $luhn->setNumber($this->NUMBERS[$i]); + if($luhn->validate()) { + print('The number ' + $luhn->getNumber() + ' has passed the Luhn validation.' + "\n"); + } else { + print('The number ' + $luhn->getNumber() + ' has NOT passed the Luhn validation.' + "\n"); + } + $i++; + } + } +} + diff --git a/tests/luhn_verify.exp b/tests/luhn_verify.exp new file mode 100644 index 0000000..6e8970a --- /dev/null +++ b/tests/luhn_verify.exp @@ -0,0 +1,6 @@ +The number 3788803280 has passed the Luhn validation. +The number 6487308345 has passed the Luhn validation. +The number 5443489710530865 has passed the Luhn validation. +The number 5539266155200609 has passed the Luhn validation. +The number 4024007151066296 has passed the Luhn validation. +The number 4345234978 has NOT passed the Luhn validation.