write_test.go (1396B)
1 package m3u8 2 3 import ( 4 "bytes" 5 "strings" 6 "testing" 7 ) 8 9 func TestWriteVariant(t *testing.T) { 10 var cases = []struct { 11 name string 12 v Variant 13 want string 14 valid bool 15 }{ 16 { 17 "simple", 18 Variant{ 19 URI: "url_0/193039199_mp4_h264_aac_hd_7.m3u8", 20 Bandwidth: 2149280, 21 Codecs: []string{"mp4a.40.2", "avc1.64001f"}, 22 Resolution: [2]int{1280, 720}, 23 }, 24 `#EXT-X-STREAM-INF:BANDWIDTH=2149280,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=1280x720 25 url_0/193039199_mp4_h264_aac_hd_7.m3u8`, 26 true, 27 }, 28 { 29 "rounded frame rate", 30 Variant{ 31 URI: "small.m3u8", 32 Bandwidth: 10000, 33 FrameRate: 60 / 1.001, // busted NTSC 34 }, 35 `#EXT-X-STREAM-INF:BANDWIDTH=10000,FRAME-RATE=59.940 36 small.m3u8`, 37 true, 38 }, 39 { 40 "no bandwidth", 41 Variant{URI: "url_0/193039199_mp4_h264_aac_hd_7.m3u8"}, 42 "", 43 false, 44 }, 45 } 46 47 for _, tt := range cases { 48 t.Run(tt.name, func(t *testing.T) { 49 buf := &bytes.Buffer{} 50 _, err := writeVariant(buf, &tt.v) 51 if err != nil && tt.valid { 52 t.Fatalf("non-nil error for valid variant %v: %v", tt.v, err) 53 } else if !tt.valid && err == nil { 54 t.Fatalf("nil error for invalid variant %v: %v", tt.v, err) 55 } 56 got := strings.TrimSpace(buf.String()) // trim newline 57 if got != tt.want { 58 t.Errorf("unexpected variant text") 59 t.Logf("got: %s", got) 60 t.Logf("want: %s", tt.want) 61 } 62 }) 63 } 64 }