package magic import "testing" // testMIMEJXL is the MIME type of JPEG XL. const testMIMEJXL = "image/jxl" // TestDetectFormatJPEGXL verifies that both JPEG XL signatures, that of a // bare codestream and that of the container, are detected as image/jxl. func TestDetectFormatJPEGXL(t *testing.T) { t.Parallel() tests := []struct { name string data []byte }{ {"codestream", pad(0xFF, 0x0A)}, {"container", pad( 0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A, )}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() got, err := DetectFormat(tt.data) if err != nil || got != MIMETypeJXL { t.Errorf("DetectFormat() = %q, %v, want %q", got, err, testMIMEJXL) } err = ValidateMagicBytes(tt.data, testMIMEJXL) if err != nil { t.Errorf("ValidateMagicBytes(%q) error = %v", testMIMEJXL, err) } }) } } // TestJPEGXLMIMEType verifies that image/jxl is a supported input type and // maps to and from the format jxl. func TestJPEGXLMIMEType(t *testing.T) { t.Parallel() if !IsSupportedMIMEType(testMIMEJXL) { t.Errorf("IsSupportedMIMEType(%q) = false", testMIMEJXL) } format, ok := MIMEToImageFormat(testMIMEJXL) if format != FormatJXL || !ok { t.Errorf("MIMEToImageFormat(%q) = %q, %v, want %q, true", testMIMEJXL, format, ok, FormatJXL) } if got := ImageFormatToMIME(FormatJXL); got != testMIMEJXL { t.Errorf("ImageFormatToMIME(%q) = %q, want %q", FormatJXL, got, testMIMEJXL) } }