github.com/bluenviron/mediacommon@v1.9.3/pkg/codecs/jpeg/define_quantization_table_test.go (about) 1 package jpeg 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 var casesDefineQuantizationTable = []struct { 11 name string 12 enc []byte 13 dec DefineQuantizationTable 14 }{ 15 { 16 "base", 17 []byte{ 18 0xff, 0xdb, 0x0, 0x84, 0x4, 0x1, 0x2, 0x3, 19 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 20 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 21 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 22 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 23 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 24 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 25 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 26 0x4, 0x1, 0x2, 0x3, 0x4, 0x5, 0x5, 0x6, 27 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 0x5, 0x6, 28 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 0x5, 0x6, 29 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 0x5, 0x6, 30 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 0x5, 0x6, 31 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 0x5, 0x6, 32 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 0x5, 0x6, 33 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 0x5, 0x6, 34 0x7, 0x8, 0x5, 0x6, 0x7, 0x8, 35 }, 36 DefineQuantizationTable{ 37 Tables: []QuantizationTable{ 38 { 39 ID: 4, 40 Data: bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04}, 64/4), 41 }, 42 { 43 ID: 5, 44 Data: bytes.Repeat([]byte{0x05, 0x06, 0x07, 0x08}, 64/4), 45 }, 46 }, 47 }, 48 }, 49 } 50 51 func TestDefineQuantizationTableUnmarshal(t *testing.T) { 52 for _, ca := range casesDefineQuantizationTable { 53 t.Run(ca.name, func(t *testing.T) { 54 var h DefineQuantizationTable 55 err := h.Unmarshal(ca.enc[4:]) 56 require.NoError(t, err) 57 require.Equal(t, ca.dec, h) 58 }) 59 } 60 } 61 62 func TestDefineQuantizationTableMarshal(t *testing.T) { 63 for _, ca := range casesDefineQuantizationTable { 64 t.Run(ca.name, func(t *testing.T) { 65 byts := ca.dec.Marshal(nil) 66 require.Equal(t, ca.enc, byts) 67 }) 68 } 69 } 70 71 func FuzzDefineQuantizationTableUnmarshal(f *testing.F) { 72 f.Fuzz(func(_ *testing.T, b []byte) { 73 var h DefineQuantizationTable 74 h.Unmarshal(b) //nolint:errcheck 75 }) 76 }