m3u8_test.go (1420B)
1 package m3u8 2 3 import ( 4 "bytes" 5 "strings" 6 "testing" 7 ) 8 9 func TestWriteSessionData(t *testing.T) { 10 var cases = []struct { 11 name string 12 sd SessionData 13 want string 14 valid bool 15 }{ 16 { 17 "all attributes set", 18 SessionData{ID: "1234", Value: "5678", Language: "indonesian"}, 19 `#EXT-X-SESSION-DATA:DATA-ID="1234",VALUE="5678",LANGUAGE="indonesian"`, 20 true, 21 }, 22 { 23 "language is optional", 24 SessionData{ID: "1234", URI: "hello/hi.json"}, 25 `#EXT-X-SESSION-DATA:DATA-ID="1234",URI="hello/hi.json"`, 26 true, 27 }, 28 { 29 "required attributes set(id, value or uri)", 30 SessionData{ID: "1234", Value: "5678"}, 31 `#EXT-X-SESSION-DATA:DATA-ID="1234",VALUE="5678"`, 32 true, 33 }, 34 { 35 "empty id", 36 SessionData{URI: "hello/hi.json"}, 37 "", 38 false, 39 }, 40 { 41 "both URI and Value set", 42 SessionData{ID: "1234", URI: "hello/hi.json", Value: "5678"}, 43 "", 44 false, 45 }, 46 } 47 for _, tt := range cases { 48 t.Run(tt.name, func(t *testing.T) { 49 buf := &bytes.Buffer{} 50 _, err := writeSessionData(buf, tt.sd) 51 if err == nil && !tt.valid { 52 t.Fatalf("nil error on invalid session data %v", tt.sd) 53 } else if err != nil && tt.valid { 54 t.Fatalf("non-nil error %v on valid session data", err) 55 } 56 got := strings.TrimSpace(buf.String()) // strip newlines 57 if got != tt.want { 58 t.Errorf("unexpected session data text") 59 t.Log("got:", got) 60 t.Log("want:", tt.want) 61 } 62 }) 63 } 64 }