github.com/bluenviron/mediacommon@v1.9.3/pkg/bits/read_test.go (about) 1 package bits 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestReadBits(t *testing.T) { 10 buf := []byte{0xA8, 0xC7, 0xD6, 0xAA, 0xBB, 0x10} 11 pos := 0 12 v, _ := ReadBits(buf, &pos, 6) 13 require.Equal(t, uint64(0x2a), v) 14 v, _ = ReadBits(buf, &pos, 6) 15 require.Equal(t, uint64(0x0c), v) 16 v, _ = ReadBits(buf, &pos, 6) 17 require.Equal(t, uint64(0x1f), v) 18 v, _ = ReadBits(buf, &pos, 8) 19 require.Equal(t, uint64(0x5a), v) 20 v, _ = ReadBits(buf, &pos, 20) 21 require.Equal(t, uint64(0xaaec4), v) 22 } 23 24 func TestReadBitsError(t *testing.T) { 25 buf := []byte{0xA8} 26 pos := 0 27 _, err := ReadBits(buf, &pos, 6) 28 require.NoError(t, err) 29 _, err = ReadBits(buf, &pos, 6) 30 require.EqualError(t, err, "not enough bits") 31 } 32 33 func TestReadGolombUnsigned(t *testing.T) { 34 buf := []byte{0x38} 35 pos := 0 36 v, _ := ReadGolombUnsigned(buf, &pos) 37 require.Equal(t, uint32(6), v) 38 } 39 40 func TestReadGolombUnsignedErrors(t *testing.T) { 41 buf := []byte{0x00} 42 pos := 0 43 _, err := ReadGolombUnsigned(buf, &pos) 44 require.EqualError(t, err, "not enough bits") 45 46 buf = []byte{0x00, 0x01} 47 pos = 0 48 _, err = ReadGolombUnsigned(buf, &pos) 49 require.EqualError(t, err, "not enough bits") 50 51 buf = []byte{0x00, 0x00, 0x00, 0x00, 0x01} 52 pos = 0 53 _, err = ReadGolombUnsigned(buf, &pos) 54 require.EqualError(t, err, "invalid value") 55 } 56 57 func TestReadGolombSigned(t *testing.T) { 58 buf := []byte{0x38} 59 pos := 0 60 v, _ := ReadGolombSigned(buf, &pos) 61 require.Equal(t, int32(-3), v) 62 63 buf = []byte{0b00100100} 64 pos = 0 65 v, _ = ReadGolombSigned(buf, &pos) 66 require.Equal(t, int32(2), v) 67 } 68 69 func TestReadGolombSignedErrors(t *testing.T) { 70 buf := []byte{0x00} 71 pos := 0 72 _, err := ReadGolombSigned(buf, &pos) 73 require.EqualError(t, err, "not enough bits") 74 } 75 76 func TestReadFlag(t *testing.T) { 77 buf := []byte{0xFF} 78 pos := 0 79 v, _ := ReadFlag(buf, &pos) 80 require.Equal(t, true, v) 81 } 82 83 func TestReadFlagError(t *testing.T) { 84 buf := []byte{} 85 pos := 0 86 _, err := ReadFlag(buf, &pos) 87 require.EqualError(t, err, "not enough bits") 88 }