From a0698547385e2aa355c9a3c40ffdf1e0c04d63a8 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 27 Aug 2016 22:08:55 +0200 Subject: Solve luhn --- go/luhn/luhn_test.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 go/luhn/luhn_test.go (limited to 'go/luhn/luhn_test.go') diff --git a/go/luhn/luhn_test.go b/go/luhn/luhn_test.go new file mode 100644 index 0000000..db7fc4a --- /dev/null +++ b/go/luhn/luhn_test.go @@ -0,0 +1,54 @@ +package luhn + +import "testing" + +var validTests = []struct { + n string + ok bool +}{ + {"738", false}, + {"8739567", true}, + {"1111", false}, + {"8763", true}, + {" ", false}, + {"", false}, + {"2323 2005 7766 3554", true}, +} + +var addTests = []struct{ raw, luhn string }{ + {"123", "1230"}, + {"873956", "8739567"}, + {"837263756", "8372637564"}, + {"2323 2005 7766 355", "2323 2005 7766 3554"}, + // bonus Unicode cases + // {"2323·2005·7766·355", "2323·2005·7766·3554"}, + // {"123", "1230"}, +} + +func TestValid(t *testing.T) { + for _, test := range validTests { + if ok := Valid(test.n); ok != test.ok { + t.Fatalf("Valid(%s) = %t, want %t.", test.n, ok, test.ok) + } + } +} + +func TestAddCheck(t *testing.T) { + for _, test := range addTests { + if luhn := AddCheck(test.raw); luhn != test.luhn { + t.Fatalf("AddCheck(%s) = %s, want %s.", test.raw, luhn, test.luhn) + } + } +} + +func BenchmarkValid(b *testing.B) { + for i := 0; i < b.N; i++ { + Valid("2323 2005 7766 3554") + } +} + +func BenchmarkAddCheck(b *testing.B) { + for i := 0; i < b.N; i++ { + AddCheck("2323 2005 7766 355") + } +} -- cgit v1.2.3