123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package qr
- import (
- "fmt"
- "image/png"
- "os"
- "testing"
- "github.com/boombuler/barcode"
- )
- type test struct {
- Text string
- Mode Encoding
- ECL ErrorCorrectionLevel
- Result string
- }
- var tests = []test{
- test{
- Text: "hello world",
- Mode: Unicode,
- ECL: H,
- Result: `
- +++++++.+.+.+...+.+++++++
- +.....+.++...+++..+.....+
- +.+++.+.+.+.++.++.+.+++.+
- +.+++.+....++.++..+.+++.+
- +.+++.+..+...++.+.+.+++.+
- +.....+.+..+..+++.+.....+
- +++++++.+.+.+.+.+.+++++++
- ........++..+..+.........
- ..+++.+.+++.+.++++++..+++
- +++..+..+...++.+...+..+..
- +...+.++++....++.+..++.++
- ++.+.+.++...+...+.+....++
- ..+..+++.+.+++++.++++++++
- +.+++...+..++..++..+..+..
- +.....+..+.+.....+++++.++
- +.+++.....+...+.+.+++...+
- +.+..+++...++.+.+++++++..
- ........+....++.+...+.+..
- +++++++......++++.+.+.+++
- +.....+....+...++...++.+.
- +.+++.+.+.+...+++++++++..
- +.+++.+.++...++...+.++..+
- +.+++.+.++.+++++..++.+..+
- +.....+..+++..++.+.++...+
- +++++++....+..+.+..+..+++`,
- },
- }
- func Test_GetUnknownEncoder(t *testing.T) {
- if unknownEncoding.getEncoder() != nil {
- t.Fail()
- }
- }
- func Test_EncodingStringer(t *testing.T) {
- tests := map[Encoding]string{
- Auto: "Auto",
- Numeric: "Numeric",
- AlphaNumeric: "AlphaNumeric",
- Unicode: "Unicode",
- unknownEncoding: "",
- }
- for enc, str := range tests {
- if enc.String() != str {
- t.Fail()
- }
- }
- }
- func Test_InvalidEncoding(t *testing.T) {
- _, err := Encode("hello world", H, Numeric)
- if err == nil {
- t.Fail()
- }
- }
- func imgStrToBools(str string) []bool {
- res := make([]bool, 0, len(str))
- for _, r := range str {
- if r == '+' {
- res = append(res, true)
- } else if r == '.' {
- res = append(res, false)
- }
- }
- return res
- }
- func Test_Encode(t *testing.T) {
- for _, tst := range tests {
- res, err := Encode(tst.Text, tst.ECL, tst.Mode)
- if err != nil {
- t.Error(err)
- }
- qrCode, ok := res.(*qrcode)
- if !ok {
- t.Fail()
- }
- testRes := imgStrToBools(tst.Result)
- if (qrCode.dimension * qrCode.dimension) != len(testRes) {
- t.Fail()
- }
- t.Logf("dim %d", qrCode.dimension)
- for i := 0; i < len(testRes); i++ {
- x := i % qrCode.dimension
- y := i / qrCode.dimension
- if qrCode.Get(x, y) != testRes[i] {
- t.Errorf("Failed at index %d", i)
- }
- }
- }
- }
- func ExampleEncode() {
- f, _ := os.Create("qrcode.png")
- defer f.Close()
- qrcode, err := Encode("hello world", L, Auto)
- if err != nil {
- fmt.Println(err)
- } else {
- qrcode, err = barcode.Scale(qrcode, 100, 100)
- if err != nil {
- fmt.Println(err)
- } else {
- png.Encode(f, qrcode)
- }
- }
- }
|