Florian Sundermann il y a 11 ans
Parent
commit
5a0018c9b8
1 fichiers modifiés avec 71 ajouts et 42 suppressions
  1. 71 42
      qr/encoder_test.go

+ 71 - 42
qr/encoder_test.go

@@ -9,31 +9,45 @@ import (
 	"github.com/boombuler/barcode"
 )
 
-var qrHelloWorldHUni = []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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
-	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,
+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) {
@@ -65,24 +79,39 @@ func Test_InvalidEncoding(t *testing.T) {
 	}
 }
 
-func Test_Encode(t *testing.T) {
-	res, err := Encode("hello world", H, Unicode)
-	if err != nil {
-		t.Error(err)
-	}
-	qrCode, ok := res.(*qrcode)
-	if !ok {
-		t.Fail()
-	}
-	if (qrCode.dimension * qrCode.dimension) != len(qrHelloWorldHUni) {
-		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)
+		}
 	}
-	t.Logf("dim %d", qrCode.dimension)
-	for i := 0; i < len(qrHelloWorldHUni); i++ {
-		x := i % qrCode.dimension
-		y := i / qrCode.dimension
-		if qrCode.Get(x, y) != qrHelloWorldHUni[i] {
-			t.Errorf("Failed at index %d", i)
+	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)
+			}
 		}
 	}
 }