summaryrefslogtreecommitdiff
path: root/go/crypto-square/crypto_square_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/crypto-square/crypto_square_test.go')
-rw-r--r--go/crypto-square/crypto_square_test.go108
1 files changed, 108 insertions, 0 deletions
diff --git a/go/crypto-square/crypto_square_test.go b/go/crypto-square/crypto_square_test.go
new file mode 100644
index 0000000..75a3582
--- /dev/null
+++ b/go/crypto-square/crypto_square_test.go
@@ -0,0 +1,108 @@
+package cryptosquare
+
+import "testing"
+
+const targetTestVersion = 2
+
+var tests = []struct {
+ pt string // plain text
+ ct string // cipher text
+}{
+ {
+ "s#$%^&plunk",
+ "su pn lk",
+ },
+ {
+ "1, 2, 3 GO!",
+ "1g 2o 3",
+ },
+ {
+ "1234",
+ "13 24",
+ },
+ {
+ "123456789",
+ "147 258 369",
+ },
+ {
+ "123456789abc",
+ "159 26a 37b 48c",
+ },
+ {
+ "Never vex thine heart with idle woes",
+ "neewl exhie vtetw ehaho ririe vntds",
+ },
+ {
+ "ZOMG! ZOMBIES!!!",
+ "zzi ooe mms gb",
+ },
+ {
+ "Time is an illusion. Lunchtime doubly so.",
+ "tasney inicds miohoo elntu illib suuml",
+ },
+ {
+ "We all know interspecies romance is weird.",
+ "wneiaw eorene awssci liprer lneoid ktcms",
+ },
+ {
+ "Madness, and then illumination.",
+ "msemo aanin dnin ndla etlt shui",
+ },
+ {
+ "Vampires are people too!",
+ "vrel aepe mset paoo irpo",
+ },
+ {
+ "",
+ "",
+ },
+ {
+ "1",
+ "1",
+ },
+ {
+ "12",
+ "1 2",
+ },
+ {
+ "12 3",
+ "13 2",
+ },
+ {
+ "12345678",
+ "147 258 36",
+ },
+ {
+ "123456789a",
+ "159 26a 37 48",
+ },
+ {
+ "If man was meant to stay on the ground god would have given us roots",
+ "imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau",
+ },
+ {
+ "Have a nice day. Feed the dog & chill out!",
+ "hifei acedl veeol eddgo aatcu nyhht",
+ },
+}
+
+func TestEncode(t *testing.T) {
+ if testVersion != targetTestVersion {
+ t.Errorf("Found testVersion = %v, want %v.", testVersion, targetTestVersion)
+ }
+ for _, test := range tests {
+ if ct := Encode(test.pt); ct != test.ct {
+ t.Fatalf(`Encode(%q):
+got %q
+want %q`, test.pt, ct, test.ct)
+ }
+ }
+}
+
+func BenchmarkEncode(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ for _, test := range tests {
+ Encode(test.pt)
+ }
+ }
+}