The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
print "1..55\n";

use No::KontoNr qw(kontonr_ok kredittkortnr_ok mod_10 kontonr_f nok_f);

$testno = 1;

print "Noen gyldige bankkontonummer...\n";
for ('52050603512',
     '5205 06 03512',  # space skal være lov
     '5205.06.03512',  #
     '05711675827',
     '65040503190',
     '08065989728',
     '90010705990',
     '08063873080',
     '05409926853',
     '52050681602',
     '08135205851',
     '20850500186',
     '08015444674',
     '82000148888',
     '08260122720',
     '82000127287',

     # noen postgiro nr
     '10 50905',
     '1500206',
     '1694801',
     ) {
    my $k = $_;
    $k =~ s/\D//g;
    print "not " unless kontonr_ok($_) eq $k;
    print "ok $testno\n";
    $testno++;
}

print "Noen ugyldige bankkontonummer...\n";
for ('520506035123',  # for langt
     '520506035',     # for kort
     '5205-06-03512',
     undef,
     '52050603513',
     '52050603514',
     '52050603515',
     '52050603516',
     '52050603517',
     '52050603518',
     '52050603519',
     '52050603510',
     '52050603511',
     ) {
    print "not " if kontonr_ok($_);
    print "ok $testno\n";
    $testno++;
}

print "Kredittkortnr...\n";
print "not " unless kredittkortnr_ok("5413 0666 9455 0196");
print "ok $testno\n";  $testno++;

print "Modulus 10 sjekk...\n";
for (['1'          => 8],
     ['12'         => 5],
     ['123'        => 0],
     ['1234'       => 4],
     ['12345'      => 5],
     ['1234567'    => 4],
     ['12345678'   => 2],
     ['123456789'  => 7],
     ['1234567890' => 3],
     ['6'          => 7],
     ['66'         => 1],
     ['666'        => 8],
     ['6666'       => 2],
     ['66666'      => 9],
     ) {
    my($siffer, $forventet) = @$_;
    my $m10 = mod_10($siffer);
    print "mod_10($siffer) => $m10";
    if ($m10 != $forventet) {
	print " (forventet: $forventet)\n";
	print "not ";
    } else {
	print "\n";
    }
    print "ok $testno\n";
    $testno++;
}

print "Tester formattering av kontonummer...\n";
print "not " unless kontonr_f("5205 06 03512") eq "5205.06.03512";
print "ok $testno\n"; $testno++;

print "not " unless kontonr_f("1694801") eq "0000.16.94801";
print "ok $testno\n"; $testno++;

print "not " unless kontonr_f("") eq "????.??.?????";
print "ok $testno\n"; $testno++;

print "Tester formatering av kronebeløp...\n";
print "not " unless nok_f(3.5) eq "3,50";
print "ok $testno\n"; $testno++;

print "not " unless nok_f(3) eq "3,- ";
print "ok $testno\n"; $testno++;

print "not " unless nok_f(100) eq "100,- ";
print "ok $testno\n"; $testno++;

print "not " unless nok_f(49_998.50) eq "49.998,50";
print "ok $testno\n"; $testno++;

print "not " unless nok_f(1_000_000_000_000) eq "1.000.000.000.000,- ";
print "ok $testno\n"; $testno++;