package message import ( "math/rand" "reflect" "testing" ) func TestMakeUser(t *testing.T) { var actual, expected []byte s := &MockScreen{} u := NewUserScreen(SimpleID("foo"), s) cfg := u.Config() cfg.Theme = MonoTheme // Mono u.SetConfig(cfg) m := NewAnnounceMsg("hello") defer u.Close() u.Send(m) u.HandleMsg(u.ConsumeOne()) s.Read(&actual) expected = []byte(m.String() + Newline) if !reflect.DeepEqual(actual, expected) { t.Errorf("Got: `%s`; Expected: `%s`", actual, expected) } } func TestRenderTimestamp(t *testing.T) { var actual, expected []byte // Reset seed for username color rand.Seed(1) s := &MockScreen{} u := NewUserScreen(SimpleID("foo"), s) cfg := u.Config() timefmt := "AA:BB" cfg.Theme = DefaultTheme cfg.Timeformat = &timefmt u.SetConfig(cfg) if got, want := cfg.Theme.Timestamp("foo"), `foo`+Reset; got != want { t.Errorf("Wrong timestamp formatting:\n got: %q\nwant: %q", got, want) } m := NewPublicMsg("hello", u) defer u.Close() u.Send(m) u.HandleMsg(u.ConsumeOne()) s.Read(&actual) expected = []byte(`AA:BB` + Reset + ` [foo] hello` + Newline) if !reflect.DeepEqual(actual, expected) { t.Errorf("Wrong screen output:\n Got: `%q`;\nWant: `%q`", actual, expected) } }