diff --git a/test.png b/tests/test.png similarity index 100% rename from test.png rename to tests/test.png diff --git a/test2.png b/tests/test2.png similarity index 100% rename from test2.png rename to tests/test2.png diff --git a/tests/test3.png b/tests/test3.png new file mode 100644 index 0000000..66ac80f Binary files /dev/null and b/tests/test3.png differ diff --git a/tests/tests.json b/tests/tests.json new file mode 100644 index 0000000..0eb53f0 --- /dev/null +++ b/tests/tests.json @@ -0,0 +1,22 @@ +[ + { + "filename": "./tests/test.png", + "zplstring": "^XA,^FS^FO0,0^GFA,32,51,3,,::01C000::,001C00::,1DDC00::,::^FS,^XZ", + "graphictype": "CompressedASCII" + }, + { + "filename": "./tests/test2.png", + "zplstring": "^XA,^FS^FO0,0^GFA,389,630,63,,038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038000::1C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C7100::E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00:lJF00^FS,^XZ", + "graphictype": "CompressedASCII" + }, + { + "filename": "./tests/test3.png", + "zplstring": "^XA,^FS^FO0,0^GFA,4911,45000,75,LFCmI0LFEmI0MFmI0MF8mH0MFCmH0MFEmH0NFmH0NF8mG0NFCmG0NFEmG0OFmG0OF8m0OFCm0OFEm0PFm0PF8lY0PFClY0PFElY0QFlY0QF8lX0QFClX0QFElX0RFlX0RF8lW0RFClW0RFElW0SFlW0SF8lV0SFClV0SFElV07SFlV03SF8lU01SFClU00SFElU007SFlU003SF8lT001SFClT000SFElT0007SFlT0003SF8lS0001SFClS0000SFElS00007SFlS00003SF8lR00001SFClR00000SFElR000007SFlR000003SF8lQ000001SFClQ0K0SFElQ0K07SFlQ0K03SF8lP0K01SFClP0L0SFElP0L07SFlP0L03SF8lO0L01SFClO0M0SFElO0M07SFlO0M03SF8lN0M01SFClN0N0SFElN0N07SFlN0N03SF8lM0N01SFClM0O0SFElM0O07SFlM0O03SF8lL0O01SFClL0P0SFElL0P07SFlL0P03SF8lK0P01SFClK0Q0SFElK0Q07SFlK0Q03SF8lJ0Q01SFClJ0R0SFElJ0R07SFlJ0R03SF8lI0R01SFClI0S0SFElI0S07SFlI0S03SF8lH0S01SFClH0T0SFElH0T07SFlH0T03SF8lG0T01SFClG0U0SFElG0U07SFlG0U03SF8l0U01SFCl0V0SFEl0V07SFl0V03SF8kY0V01SFCkY0W0SFEkY0W07SFkY0W03SF8kX0W01SFCkX0X0SFEkX0X07SFkX0X03SF8kW0X01SFCkW0Y0SFEkW0Y07SFkW0Y03SF8kV0Y01SFCkV0g0SFEkV0g07SFkV0g03SF8kU0g01SFCkU0gG0SFEkU0gG07SFkU0gG03SF8kT0gG01SFCkT0gH0SFEkT0gH07SFkT0gH03SF8kS0gH01SFCkS0gI0SFEkS0gI07SFkS0gI03SF8kR0gI01SFCkR0gJ0SFEkR0gJ07SFkR0gJ03SF8kQ0gJ01SFCkQ0gK0SFEkQ0gK07SFkQ0gK03SF8kP0gK01SFCkP0gL0SFEkP0gL07SFkP0gL03SF8kO0gL01SFCkO0gM0SFEkO0gM07SFkO0gM03SF8kN0gM01SFCkN0gN0SFEkN0gN07SFkN0gN03SF8kM0gN01SFCkM0gO0SFEkM0gO07SFkM0gO03SF8kL0gO01SFCkL0gP0SFEkL0gP07SFkL0gP03SF8kK0gP01SFCkK0gQ0SFEkK0gQ07SFkK0gQ03SF8kJ0gQ01SFCkJ0gR0SFEkJ0gR07SFkJ0gR03SF8kI0gR01SFCkI0gS0SFEkI0gS07SFkI0gS03SF8kH0gS01SFCkH0gT0SFEkH0gT07SFkH0gT03SF8kG0gT01SFCkG0gU0SFEkG0gU07SFkG0gU03SF8k0gU01SFCk0gV0SFEk0gV07SFk0gV03SF8jY0gV01SFCjY0gW0SFEjY0gW07SFjY0gW03SF8jX0gW01SFCjX0gX0SFEjX0gX07SFjX0gX03SF8jW0gX01SFCjW0gY0SFEjW0gY07SFjW0gY03SF8jV0gY01SFCjV0h0SFEjV0h07SFjV0h03SF8jU0h01SFCjU0hG0SFEjU0hG07SFjU0hG03SF8jT0hG01SFCjT0hH0SFEjT0hH07SFjT0hH03SF8jS0hH01SFCjS0hI0SFEjS0hI07SFjS0hI03SF8jR0hI01SFCjR0hJ0SFEjR0hJ07SFjR0hJ03SF8jQ0hJ01SFCjQ0hK0SFEjQ0hK07SFjQ0hK03SF8jP0hK01SFCjP0hL0SFEjP0hL07SFjP0hL03SF8jO0hL01SFCjO0hM0SFEjO0hM07SFjO0hM03SF8jN0hM01SFCjN0hN0SFEjN0hN07SFjN0hN03SF8jM0hN01SFCjM0hO0SFEjM0hO07SFjM0hO03SF8jL0hO01SFCjL0hP0SFEjL0hP07SFjL0hP03SF8jK0hP01SFCjK0hQ0SFEjK0hQ07SFjK0hQ03SF8jJ0hQ01SFCjJ0hR0SFEjJ0hR07SFjJ0hR03SF8jI0hR01SFCjI0hS0SFEjI0hS07SFjI0hS03SF8jH0hS01SFCjH0hT0SFEjH0hT07SFjH0hT03SF8jG0hT01SFCjG0hU0SFEjG0hU07SFjG0hU03SF8j0hU01SFCj0hV0SFEj0hV07SFj0hV03SFj0hV01SFj0hW0SFj0hW07RFj0hW03RFj0hW01RFj0hX0RFj0hX07QFj0hX03QFj0hX01QFj0hY0QFj0hY07PFj0hY03PFj0hY01PFj0i0PFj0i07OFj0i03OFj0i01OFj0iG0OFj0iG07NFj0iG03NFj0iG01NFj0iH0NFj0iH07MFj0iH03MFj0iH01MFj0,::::::::::::::::::::::::::::::::::::::iY01LFCiI0iY01LFEiI0iY01MFiI0iY01MF8iH0iY01MFCiH0iY01MFEiH0iY01NFiH0iY01NF8iG0iY01NFCiG0iY01NFEiG0iY01OFiG0iY01OF8i0iY01OFCi0iY01OFEi0iY01PFi0iY01PF8hY0iY01PFChY0iY01PFEhY0iY01QFhY0iY01QF8hX0iY01QFChX0iY01QFEhX0iY01RFhX0iY01RF8hW0iY01RFChW0iY01RFEhW0iY01SFhW0iY01SF8hV0iY01SFChV0j0SFEhV0j07SFhV0j03SF8hU0j01SFChU0jG0SFEhU0jG07SFhU0jG03SF8hT0jG01SFChT0jH0SFEhT0jH07SFhT0jH03SF8hS0jH01SFChS0jI0SFEhS0jI07SFhS0jI03SF8hR0jI01SFChR0jJ0SFEhR0jJ07SFhR0jJ03SF8hQ0jJ01SFChQ0jK0SFEhQ0jK07SFhQ0jK03SF8hP0jK01SFChP0jL0SFEhP0jL07SFhP0jL03SF8hO0jL01SFChO0jM0SFEhO0jM07SFhO0jM03SF8hN0jM01SFChN0jN0SFEhN0jN07SFhN0jN03SF8hM0jN01SFChM0jO0SFEhM0jO07SFhM0jO03SF8hL0jO01SFChL0jP0SFEhL0jP07SFhL0jP03SF8hK0jP01SFChK0jQ0SFEhK0jQ07SFhK0jQ03SF8hJ0jQ01SFChJ0jR0SFEhJ0jR07SFhJ0jR03SF8hI0jR01SFChI0jS0SFEhI0jS07SFhI0jS03SF8hH0jS01SFChH0jT0SFEhH0jT07SFhH0jT03SF8hG0jT01SFChG0jU0SFEhG0jU07SFhG0jU03SF8h0jU01SFCh0jV0SFEh0jV07SFh0jV03SF8gY0jV01SFCgY0jW0SFEgY0jW07SFgY0jW03SF8gX0jW01SFCgX0jX0SFEgX0jX07SFgX0jX03SF8gW0jX01SFCgW0jY0SFEgW0jY07SFgW0jY03SF8gV0jY01SFCgV0k0SFEgV0k07SFgV0k03SF8gU0k01SFCgU0kG0SFEgU0kG07SFgU0kG03SF8gT0kG01SFCgT0kH0SFEgT0kH07SFgT0kH03SF8gS0kH01SFCgS0kI0SFEgS0kI07SFgS0kI03SF8gR0kI01SFCgR0kJ0SFEgR0kJ07SFgR0kJ03SF8gQ0kJ01SFCgQ0kK0SFEgQ0kK07SFgQ0kK03SF8gP0kK01SFCgP0kL0SFEgP0kL07SFgP0kL03SF8gO0kL01SFCgO0kM0SFEgO0kM07SFgO0kM03SF8gN0kM01SFCgN0kN0SFEgN0kN07SFgN0kN03SF8gM0kN01SFCgM0kO0SFEgM0kO07SFgM0kO03SF8gL0kO01SFCgL0kP0SFEgL0kP07SFgL0kP03SF8gK0kP01SFCgK0kQ0SFEgK0kQ07SFgK0kQ03SF8gJ0kQ01SFCgJ0kR0SFEgJ0kR07SFgJ0kR03SF8gI0kR01SFCgI0kS0SFEgI0kS07SFgI0kS03SF8gH0kS01SFCgH0kT0SFEgH0kT07SFgH0kT03SF8gG0kT01SFCgG0kU0SFEgG0kU07SFgG0kU03SF8g0kU01SFCg0kV0SFEg0kV07SFg0kV03SF8Y0kV01SFCY0kW0SFEY0kW07SFY0kW03SF8X0kW01SFCX0kX0SFEX0kX07SFX0kX03SF8W0kX01SFCW0kY0SFEW0kY07SFW0kY03SF8V0kY01SFCV0l0SFEV0l07SFV0l03SF8U0l01SFCU0lG0SFEU0lG07SFU0lG03SF8T0lG01SFCT0lH0SFET0lH07SFT0lH03SF8S0lH01SFCS0lI0SFES0lI07SFS0lI03SF8R0lI01SFCR0lJ0SFER0lJ07SFR0lJ03SF8Q0lJ01SFCQ0lK0SFEQ0lK07SFQ0lK03SF8P0lK01SFCP0lL0SFEP0lL07SFP0lL03SF8O0lL01SFCO0lM0SFEO0lM07SFO0lM03SF8N0lM01SFCN0lN0SFEN0lN07SFN0lN03SF8M0lN01SFCM0lO0SFEM0lO07SFM0lO03SF8L0lO01SFCL0lP0SFEL0lP07SFL0lP03SF8K0lP01SFCK0lQ0SFEK0lQ07SFK0lQ03SF80000lQ01SFC0000lR0SFE0000lR07SF0000lR03SF8000lR01SFC000lS0SFE000lS07SF000lS03SF800lS01SFC00lT0SFE00lT07SF00lT03SF80lT01SFC0lU0SFE0lU07SF0lU03SF8lU01SFClV0SFElV07SFlV03SFlV01SFlW0SFlW07RFlW03RFlW01RFlX0RFlX07QFlX03QFlX01QFlY0QFlY07PFlY03PFlY01PFm0PFm07OFm03OFm01OFmG0OFmG07NFmG03NFmG01NFmH0NFmH07MFmH03MF^FS,^XZ", + "graphictype": "CompressedASCII" + }, + { + "filename": "./tests/test.png", + "zplstring": "^XA,^FS^FO0,0^GFA,119,51,3,00000000000000000001c00001c00001c000000000001c00001c00001c000000001ddc001ddc001ddc00000000000000000000^FS,^XZ", + "graphictype": "ASCII" + } +] \ No newline at end of file diff --git a/zplgfa_test.go b/zplgfa_test.go index c2f1248..b1b5fb9 100644 --- a/zplgfa_test.go +++ b/zplgfa_test.go @@ -1,34 +1,29 @@ package zplgfa import ( + "encoding/json" "image" _ "image/gif" _ "image/jpeg" _ "image/png" + "io/ioutil" "log" "os" - "testing" "strings" + "testing" ) type zplTest struct { - file string - zpl string + Filename string `json:"filename"` + Zplstring string `json:"zplstring"` + Graphictype string `json:"graphictype"` } var zplTests []zplTest func init() { - zplTests = []zplTest{ - { - file: "./test.png", - zpl: "^XA,^FS^FO0,0^GFA,32,51,3,,::01C000::,001C00::,1DDC00::,::^FS,^XZ", - }, - { - file: "./test2.png", - zpl: "^XA,^FS^FO0,0^GFA,389,630,63,,038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038038000::1C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C71C7100::E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00:lJF00^FS,^XZ", - }, - } + jsonstr, _ := ioutil.ReadFile("./tests/tests.json") + json.Unmarshal(jsonstr, &zplTests) } func Test_CompressASCII(t *testing.T) { @@ -37,47 +32,55 @@ func Test_CompressASCII(t *testing.T) { } } - - func Test_ConvertToZPL(t *testing.T) { + var graphicType GraphicType for i, testcase := range zplTests { - - filename, zplstring := testcase.file, testcase.zpl + filename, zplstring, graphictype := testcase.Filename, testcase.Zplstring, testcase.Graphictype // open file file, err := os.Open(filename) if err != nil { - log.Printf("Warning: could not open the file: %s\n", err) + log.Printf("Warning: could not open the file \"%s\": %s\n", filename, err) return } - + defer file.Close() - + // load image head information config, format, err := image.DecodeConfig(file) if err != nil { log.Printf("Warning: image not compatible, format: %s, config: %v, error: %s\n", format, config, err) } - + // reset file pointer to the beginning of the file file.Seek(0, 0) - + // load and decode image img, _, err := image.Decode(file) if err != nil { log.Printf("Warning: could not decode the file, %s\n", err) return } - + // flatten image flat := FlattenImage(img) - + // convert image to zpl compatible type - gfimg := ConvertToZPL(flat, CompressedASCII) - + switch graphictype { + case "ASCII": + graphicType = ASCII + case "Binary": + graphicType = Binary + case "CompressedASCII": + graphicType = CompressedASCII + default: + graphicType = CompressedASCII + } + gfimg := ConvertToZPL(flat, graphicType) + // remove whitespace - only for the test gfimg = strings.Replace(gfimg, " ", "", -1) gfimg = strings.Replace(gfimg, "\n", "", -1) - + if gfimg != zplstring { t.Fatalf("Testcase %d ConvertToZPL failed", i) }