github.com/puellanivis/breton@v0.2.16/lib/mpeg/ts/pcr/pcr_test.go (about) 1 package pcr 2 3 import ( 4 "reflect" 5 "testing" 6 "time" 7 ) 8 9 func TestMarshaling(t *testing.T) { 10 var pcr PCR 11 12 pcr.Set(1 * time.Microsecond) 13 14 if pcr.base != 27 { 15 t.Errorf("expected pcr.base == 27 but got %d", pcr.base) 16 } 17 18 // a bbbbbbbb cccccccc dddddddd eeeeeeee 19 // 0 00000000 00000000 00000000 00011011 20 // abbbbbbb bccccccc cddddddd deeeeeee e0000000 00000000 21 // 00000000 00000000 00000000 00001101 1 22 // 00000000 00000000 00000000 00001101 10000000 00000000 23 // 0 0 0 0 0 0 0 d 8 0 0 0 24 25 expected := []byte{0x00, 0x00, 0x00, 0x0d, 0x80, 0x00} 26 b, err := pcr.Marshal() 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 if !reflect.DeepEqual(b, expected) { 32 t.Errorf("pcr.Marshal: expected [% 2X], got [% 2X]", expected, b) 33 } 34 35 pcr.base = pcrModulo 36 pcr.extension = 0x1ff 37 38 // a bbbbbbbb cccccccc dddddddd eeeeeeee f gggggggg 39 // 1 11111111 11111111 11111111 11111111 1 11111111 40 // abbbbbbb bccccccc cddddddd deeeeeee e000000f gggggggg 41 // 11111111 11111111 11111111 11111111 1 1 11111111 42 // 11111111 11111111 11111111 11111111 10000001 11111111 43 // f f f f f f f f 8 1 f f 44 45 expected = []byte{0xff, 0xff, 0xff, 0xff, 0x81, 0xff} 46 b, err = pcr.Marshal() 47 if err != nil { 48 t.Fatal(err) 49 } 50 51 if !reflect.DeepEqual(b, expected) { 52 t.Errorf("pcr.Marshal: expected [% 2X], got [% 2X]", expected, b) 53 } 54 55 pcr.base = 0x1F3B795D1 56 pcr.extension = 0x15B 57 58 // a bbbbbbbb cccccccc dddddddd eeeeeeee f gggggggg 59 // 1 11110011 10110111 10010101 11010001 1 01011011 60 // abbbbbbb bccccccc cddddddd deeeeeee e000000f gggggggg 61 // 11111001 11011011 11001010 11101000 1 1 01011011 62 // 11111001 11011011 11001010 11101000 10000001 01011011 63 // f 9 d b c a e 8 8 1 5 b 64 65 expected = []byte{0xf9, 0xdb, 0xca, 0xe8, 0x81, 0x5b} 66 b, err = pcr.Marshal() 67 if err != nil { 68 t.Fatal(err) 69 } 70 71 if !reflect.DeepEqual(b, expected) { 72 t.Errorf("pcr.Marshal: expected [% 2X], got [% 2X]", expected, b) 73 } 74 75 }