123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package datamatrix
- import (
- "bytes"
- "testing"
- )
- func codeFromStr(str string, size *dmCodeSize) *datamatrixCode {
- code := newDataMatrixCode(size)
- idx := 0
- for _, r := range str {
- x := idx % size.Columns
- y := idx / size.Columns
- switch r {
- case '#':
- code.set(x, y, true)
- case '.':
- code.set(x, y, false)
- default:
- continue
- }
- idx++
- }
- return code
- }
- func Test_Issue12(t *testing.T) {
- data := `{"po":12,"batchAction":"start_end"}`
- realData := addPadding(encodeText(data), 36)
- wantedData := []byte{124, 35, 113, 112, 35, 59, 142, 45, 35, 99, 98, 117, 100, 105, 66, 100, 117, 106, 112, 111, 35, 59, 35, 116, 117, 98, 115, 117, 96, 102, 111, 101, 35, 126, 129, 181}
- if bytes.Compare(realData, wantedData) != 0 {
- t.Error("Data Encoding failed")
- return
- }
- var codeSize *dmCodeSize
- for _, s := range codeSizes {
- if s.DataCodewords() >= len(wantedData) {
- codeSize = s
- break
- }
- }
- realECC := ec.calcECC(realData, codeSize)[len(realData):]
- wantedECC := []byte{196, 53, 147, 192, 151, 213, 107, 61, 98, 251, 50, 71, 186, 15, 43, 111, 165, 243, 209, 79, 128, 109, 251, 4}
- if bytes.Compare(realECC, wantedECC) != 0 {
- t.Errorf("Error correction calculation failed\nGot: %v", realECC)
- return
- }
- barcode := `
- #.#.#.#.#.#.#.#.#.#.#.#.
- #....###..#..#....#...##
- ##.......#...#.#.#....#.
- #.###...##..#...##.##..#
- ##...####..##..#.#.#.##.
- #.###.##.###..#######.##
- #..###...##.##..#.##.##.
- #.#.#.#.#.#.###....#.#.#
- ##.#...#.#.#..#...#####.
- #...####..#...##..#.#..#
- ##...#...##.###.#.....#.
- #.###.#.##.#.....###..##
- ##..#####...#..##...###.
- ###...#.####.##.#.#.#..#
- #..###..#.#.####.#.###..
- ###.#.#..#..#.###.#.##.#
- #####.##.###..#.####.#..
- #.##.#......#.#..#.#.###
- ###.#....######.#...##..
- ##...#..##.###..#...####
- #.######.###.##..#...##.
- #..#..#.##.#..####...#.#
- ###.###..#..##.#.##...#.
- ########################`
- bc, err := Encode(data)
- if err != nil {
- t.Error(err)
- return
- }
- realResult := bc.(*datamatrixCode)
- if realResult.Columns != 24 || realResult.Rows != 24 {
- t.Errorf("Got wrong barcode size %dx%d", realResult.Columns, realResult.Rows)
- return
- }
- wantedResult := codeFromStr(barcode, realResult.dmCodeSize)
- for x := 0; x < wantedResult.Columns; x++ {
- for y := 0; y < wantedResult.Rows; y++ {
- r := realResult.get(x, y)
- w := wantedResult.get(x, y)
- if w != r {
- t.Errorf("Failed at: c%d/r%d", x, y)
- }
- }
- }
- }
|