1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // 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)
- }
- }
- }
- }
|