barcodes/validation/validate_test.go

78 lines
1.6 KiB
Go

package validation
import (
"fmt"
"testing"
"git.fjla.uk/fred.boniface/barcodes/generation"
)
const unicodeString string = "Hello, 你好, नमस्ते, こんにちは, 😃🌍🚀🎉~!@#$%^&*()_+-=[]{}|;:'\",.<>?/\\±§©µ¿¡®¬°¹²³½¾¼×÷≤≥∞∑∫√∂∆∏∃∀Ω≈≠¬≡≣∀∂∃Ω℧℁ℝℂℍℤℚ"
const asciiString string = "!7^%&3#(1@!9)6*8_:;4<~2`5-+0|{/.,?]'\"~"
func TestValidation(t *testing.T) {
testCases := []struct {
input generation.Parameters
expected bool
}{
{
input: generation.Parameters{
Format: "aztec",
ECCLevel: 4,
Content: unicodeString,
},
expected: true,
},
{
input: generation.Parameters{
Format: "codabar",
ECCLevel: 4,
Content: "ABCD",
},
expected: false,
},
{
input: generation.Parameters{
Format: "codabar",
ECCLevel: 4,
Content: "2342-943$",
},
expected: true,
},
{
input: generation.Parameters{
Format: "datamatrix",
ECCLevel: 4,
Content: unicodeString,
},
expected: true,
},
{
input: generation.Parameters{
Format: "qr",
ECCLevel: 4,
Content: unicodeString,
},
expected: true,
},
{
input: generation.Parameters{
Format: "code39",
ECCLevel: 4,
Content: asciiString,
},
expected: true,
},
}
for _, testCase := range testCases {
result := Validate(testCase.input)
if result != testCase.expected {
inputStr := fmt.Sprintf("%+v", testCase.input) // Convert struct to string representation
t.Errorf("Input: \n%s\n\nExpected: %t\n\n Got: %t", inputStr, testCase.expected, result)
}
}
}