encoder_test.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package qr
  2. import (
  3. "fmt"
  4. "github.com/boombuler/barcode"
  5. "image/png"
  6. "os"
  7. "testing"
  8. )
  9. var qrHelloWorldHUni []bool = []bool{true, true, true, true, true, true, true, false, true, false, true, false, true, false, false, false, true, false, true, true, true, true, true, true, true,
  10. true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, true, false, false, true, false, false, false, false, false, true,
  11. true, false, true, true, true, false, true, false, true, false, true, false, true, true, false, true, true, false, true, false, true, true, true, false, true,
  12. true, false, true, true, true, false, true, false, false, false, false, true, true, false, true, true, false, false, true, false, true, true, true, false, true,
  13. true, false, true, true, true, false, true, false, false, true, false, false, false, true, true, false, true, false, true, false, true, true, true, false, true,
  14. true, false, false, false, false, false, true, false, true, false, false, true, false, false, true, true, true, false, true, false, false, false, false, false, true,
  15. true, true, true, true, true, true, true, false, true, false, true, false, true, false, true, false, true, false, true, true, true, true, true, true, true,
  16. false, false, false, false, false, false, false, false, true, true, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false,
  17. false, false, true, true, true, false, true, false, true, true, true, false, true, false, true, true, true, true, true, true, false, false, true, true, true,
  18. true, true, true, false, false, true, false, false, true, false, false, false, true, true, false, true, false, false, false, true, false, false, true, false, false,
  19. true, false, false, false, true, false, true, true, true, true, false, false, false, false, true, true, false, true, false, false, true, true, false, true, true,
  20. true, true, false, true, false, true, false, true, true, false, false, false, true, false, false, false, true, false, true, false, false, false, false, true, true,
  21. false, false, true, false, false, true, true, true, false, true, false, true, true, true, true, true, false, true, true, true, true, true, true, true, true,
  22. true, false, true, true, true, false, false, false, true, false, false, true, true, false, false, true, true, false, false, true, false, false, true, false, false,
  23. true, false, false, false, false, false, true, false, false, true, false, true, false, false, false, false, false, true, true, true, true, true, false, true, true,
  24. true, false, true, true, true, false, false, false, false, false, true, false, false, false, true, false, true, false, true, true, true, false, false, false, true,
  25. true, false, true, false, false, true, true, true, false, false, false, true, true, false, true, false, true, true, true, true, true, true, true, false, false,
  26. false, false, false, false, false, false, false, false, true, false, false, false, false, true, true, false, true, false, false, false, true, false, true, false, false,
  27. true, true, true, true, true, true, true, false, false, false, false, false, false, true, true, true, true, false, true, false, true, false, true, true, true,
  28. true, false, false, false, false, false, true, false, false, false, false, true, false, false, false, true, true, false, false, false, true, true, false, true, false,
  29. true, false, true, true, true, false, true, false, true, false, true, false, false, false, true, true, true, true, true, true, true, true, true, false, false,
  30. true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, false, true, false, true, true, false, false, true,
  31. true, false, true, true, true, false, true, false, true, true, false, true, true, true, true, true, false, false, true, true, false, true, false, false, true,
  32. true, false, false, false, false, false, true, false, false, true, true, true, false, false, true, true, false, true, false, true, true, false, false, false, true,
  33. true, true, true, true, true, true, true, false, false, false, false, true, false, false, true, false, true, false, false, true, false, false, true, true, true,
  34. }
  35. func Test_Encode(t *testing.T) {
  36. res, err := Encode("hello world", H, Unicode)
  37. if err != nil {
  38. t.Error(err)
  39. }
  40. qrCode, ok := res.(*qrcode)
  41. if !ok {
  42. t.Fail()
  43. }
  44. if (qrCode.dimension * qrCode.dimension) != len(qrHelloWorldHUni) {
  45. t.Fail()
  46. }
  47. t.Logf("dim %d", qrCode.dimension)
  48. for i := 0; i < len(qrHelloWorldHUni); i++ {
  49. x := i % qrCode.dimension
  50. y := i / qrCode.dimension
  51. if qrCode.Get(x, y) != qrHelloWorldHUni[i] {
  52. t.Errorf("Failed at index %d", i)
  53. }
  54. }
  55. }
  56. func ExampleEncode() {
  57. f, _ := os.Create("qrcode.png")
  58. defer f.Close()
  59. qrcode, err := Encode("hello world", L, Auto)
  60. if err != nil {
  61. fmt.Println(err)
  62. } else {
  63. qrcode, err = barcode.Scale(qrcode, 100, 100)
  64. if err != nil {
  65. fmt.Println(err)
  66. } else {
  67. png.Encode(f, qrcode)
  68. }
  69. }
  70. }