diff options
Diffstat (limited to 'vendor/github.com/skip2/go-qrcode/reedsolomon/gf2_8_test.go')
| -rw-r--r-- | vendor/github.com/skip2/go-qrcode/reedsolomon/gf2_8_test.go | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/vendor/github.com/skip2/go-qrcode/reedsolomon/gf2_8_test.go b/vendor/github.com/skip2/go-qrcode/reedsolomon/gf2_8_test.go new file mode 100644 index 0000000..ab53d8a --- /dev/null +++ b/vendor/github.com/skip2/go-qrcode/reedsolomon/gf2_8_test.go @@ -0,0 +1,83 @@ +// go-qrcode +// Copyright 2014 Tom Harwood + +package reedsolomon + +import "testing" + +func TestGFMultiplicationIdentities(t *testing.T) { + for i := 0; i < 256; i++ { + value := gfElement(i) + if gfMultiply(gfZero, value) != gfZero { + t.Errorf("0 . %d != 0", value) + } + + if gfMultiply(value, gfOne) != value { + t.Errorf("%d . 1 == %d, want %d", value, gfMultiply(value, gfOne), value) + } + } +} + +func TestGFMultiplicationAndDivision(t *testing.T) { + // a * b == result + var tests = []struct { + a gfElement + b gfElement + result gfElement + }{ + {0, 29, 0}, + {1, 1, 1}, + {1, 32, 32}, + {2, 4, 8}, + {16, 128, 232}, + {17, 17, 28}, + {27, 9, 195}, + } + + for _, test := range tests { + result := gfMultiply(test.a, test.b) + + if result != test.result { + t.Errorf("%d * %d = %d, want %d", test.a, test.b, result, test.result) + } + + if test.b != gfZero && test.result != gfZero { + b := gfDivide(test.result, test.a) + + if b != test.b { + t.Errorf("%d / %d = %d, want %d", test.result, test.a, b, test.b) + } + } + } +} + +func TestGFInverse(t *testing.T) { + for i := 1; i < 256; i++ { + a := gfElement(i) + inverse := gfInverse(a) + + result := gfMultiply(a, inverse) + + if result != gfOne { + t.Errorf("%d * %d^-1 == %d, want %d", a, inverse, result, gfOne) + } + } +} + +func TestGFDivide(t *testing.T) { + for i := 1; i < 256; i++ { + for j := 1; j < 256; j++ { + // a * b == product + a := gfElement(i) + b := gfElement(j) + product := gfMultiply(a, b) + + // product / b == a + result := gfDivide(product, b) + + if result != a { + t.Errorf("%d / %d == %d, want %d", product, b, result, a) + } + } + } +} |
