|
- package icecast
-
- import "testing"
-
- func TestMapStreamTitleToRadioTextSanitizeAndTruncate(t *testing.T) {
- got := mapStreamTitleToRadioText(" Artist\t-\nSong \u2603 ", RadioTextOptions{
- Enabled: true,
- Prefix: "Now: ",
- MaxLen: 13,
- })
- if got != "Now: Artist -" {
- t.Fatalf("mapped=%q want %q", got, "Now: Artist -")
- }
- }
-
- func TestMapStreamTitleToRadioTextDisabledReturnsEmpty(t *testing.T) {
- got := mapStreamTitleToRadioText("Artist - Song", RadioTextOptions{Enabled: false})
- if got != "" {
- t.Fatalf("mapped=%q want empty", got)
- }
- }
-
- func TestRadioTextRelayOnlyOnChange(t *testing.T) {
- calls := 0
- last := ""
- relay := NewRadioTextRelay(RadioTextOptions{
- Enabled: true,
- OnlyOnChange: true,
- }, "", func(rt string) error {
- calls++
- last = rt
- return nil
- })
-
- if err := relay.HandleStreamTitle("Artist - Song"); err != nil {
- t.Fatalf("first handle: %v", err)
- }
- if err := relay.HandleStreamTitle("Artist - Song"); err != nil {
- t.Fatalf("second handle: %v", err)
- }
- if calls != 1 {
- t.Fatalf("calls=%d want 1", calls)
- }
- if last != "Artist - Song" {
- t.Fatalf("last=%q want %q", last, "Artist - Song")
- }
- }
-
- func TestRadioTextRelayInitialSuppressesSameUpdate(t *testing.T) {
- calls := 0
- relay := NewRadioTextRelay(RadioTextOptions{
- Enabled: true,
- OnlyOnChange: true,
- }, "Station default", func(string) error {
- calls++
- return nil
- })
-
- if err := relay.HandleStreamTitle("Station default"); err != nil {
- t.Fatalf("handle: %v", err)
- }
- if calls != 0 {
- t.Fatalf("calls=%d want 0", calls)
- }
- }
|