errorcorrection_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package qr
  2. import (
  3. "bytes"
  4. "testing"
  5. )
  6. func Test_LogTables(t *testing.T) {
  7. for i := 1; i <= 255; i++ {
  8. tmp := ec.fld.LogTbl[i]
  9. if i != ec.fld.ALogTbl[tmp] {
  10. t.Errorf("Invalid LogTables: %d", i)
  11. }
  12. }
  13. if ec.fld.ALogTbl[11] != 232 || ec.fld.ALogTbl[87] != 127 || ec.fld.ALogTbl[225] != 36 {
  14. t.Fail()
  15. }
  16. }
  17. func Test_GetPolynomial(t *testing.T) {
  18. doTest := func(b []byte) {
  19. cnt := byte(len(b) - 1)
  20. if bytes.Compare(ec.getPolynomial(cnt), b) != 0 {
  21. t.Errorf("Failed getPolynomial(%d)", cnt)
  22. }
  23. }
  24. doTest([]byte{0, 0})
  25. doTest([]byte{0, 87, 229, 146, 149, 238, 102, 21})
  26. doTest([]byte{0, 251, 67, 46, 61, 118, 70, 64, 94, 32, 45})
  27. doTest([]byte{0, 183, 26, 201, 87, 210, 221, 113, 21, 46, 65, 45, 50, 238, 184, 249, 225, 102, 58, 209, 218, 109, 165, 26, 95, 184, 192, 52, 245, 35, 254, 238, 175, 172, 79, 123, 25, 122, 43, 120, 108, 215, 80, 128, 201, 235, 8, 153, 59, 101, 31, 198, 76, 31, 156})
  28. }
  29. func Test_ErrorCorrection(t *testing.T) {
  30. doTest := func(b []byte, ecc []byte) {
  31. cnt := byte(len(ecc))
  32. if bytes.Compare(ec.calcECC(b, cnt), ecc) != 0 {
  33. t.Fail()
  34. }
  35. }
  36. data1 := []byte{16, 32, 12, 86, 97, 128, 236, 17, 236, 17, 236, 17, 236, 17, 236, 17}
  37. doTest(data1, []byte{140, 250})
  38. doTest(data1, []byte{165, 36, 212, 193, 237, 54, 199, 135, 44, 85})
  39. doTest(data1, []byte{227, 219, 167, 206, 127, 77, 181, 205, 203, 131, 6, 102, 62, 113, 173, 153, 69, 210, 55, 111, 146, 227, 13, 144, 249, 87, 103, 81, 30, 125, 189, 61, 142, 129, 129, 43, 148, 88, 25, 249, 37, 58, 57, 108, 91, 241, 78, 248, 226, 177, 17, 58, 59, 218, 53, 146, 96, 165, 146, 163, 198, 190, 15, 71, 117, 164, 167, 53})
  40. data2 := []byte{0, 0, 255, 255}
  41. doTest(data2, []byte{171, 81, 216, 241, 210})
  42. doTest(data2, []byte{12, 183, 205, 34, 73, 117, 36, 75, 237, 235})
  43. }