/timestamp, /theme: Fix rendering, add tests

This commit is contained in:
Andrey Petrov 2019-03-22 15:27:00 -04:00
parent d72aaf6bae
commit c058f72fe4
3 changed files with 42 additions and 1 deletions

View File

@ -174,6 +174,9 @@ var Themes []Theme
// Default theme to use
var DefaultTheme *Theme
// MonoTheme is a simple theme without colors, useful for testing and bots.
var MonoTheme *Theme
func allColors256() *Palette {
colors := []uint8{}
var i uint8
@ -225,6 +228,7 @@ func init() {
}
DefaultTheme = &Themes[0]
MonoTheme = &Themes[3]
/* Some debug helpers for your convenience:

View File

@ -182,7 +182,7 @@ func (u *User) render(m Message) string {
} else {
ts = ts.UTC()
}
return cfg.Theme.Timestamp(ts.Format(*cfg.Timeformat) + " " + out + Newline)
return cfg.Theme.Timestamp(ts.Format(*cfg.Timeformat)) + " " + out + Newline
}
return out + Newline
}
@ -238,6 +238,7 @@ func init() {
DefaultUserConfig = UserConfig{
Bell: true,
Quiet: false,
Theme: DefaultTheme,
}
// TODO: Seed random?

View File

@ -1,6 +1,7 @@
package message
import (
"math/rand"
"reflect"
"testing"
)
@ -10,6 +11,11 @@ func TestMakeUser(t *testing.T) {
s := &MockScreen{}
u := NewUserScreen(SimpleID("foo"), s)
cfg := u.Config()
cfg.Theme = MonoTheme // Mono
u.SetConfig(cfg)
m := NewAnnounceMsg("hello")
defer u.Close()
@ -22,3 +28,33 @@ func TestMakeUser(t *testing.T) {
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.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)
}
}