package ean import ( "image/color" "testing" ) func testHelper(t *testing.T, testCode, testResult, kind string, checkMetadata bool) { code, err := Encode(testCode) if err != nil { t.Error(err) } if checkMetadata && (code.Metadata().Dimensions != 1 || code.Content() != testCode || code.Metadata().CodeKind != kind) { t.Error("Metadata missmatch") } if len(testResult) != code.Bounds().Max.X { t.Fail() } for i, r := range testResult { if (code.At(i, 0) == color.Black) != (r == '1') { t.Fail() } } } func Test_EncodeEAN(t *testing.T) { testHelper(t, "5901234123457", "10100010110100111011001100100110111101001110101010110011011011001000010101110010011101000100101", "EAN 13", true) testHelper(t, "55123457", "1010110001011000100110010010011010101000010101110010011101000100101", "EAN 8", true) testHelper(t, "5512345", "1010110001011000100110010010011010101000010101110010011101000100101", "EAN 8", false) _, err := Encode("55123458") //<-- Invalid checksum if err == nil { t.Error("Invalid checksum not detected") } _, err = Encode("invalid") if err == nil { t.Error("\"invalid\" should not be encodable") } _, err = Encode("invalid") if err == nil { t.Error("\"invalid\" should not be encodable") } bits := encodeEAN13("invalid error") if bits != nil { t.Error("\"invalid error\" should not be encodable") } }