// 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
}
DefaultTheme = &Themes[0]
+ MonoTheme = &Themes[3]
/* Some debug helpers for your convenience:
} 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
}
DefaultUserConfig = UserConfig{
Bell: true,
Quiet: false,
+ Theme: DefaultTheme,
}
// TODO: Seed random?
package message
import (
+ "math/rand"
"reflect"
"testing"
)
s := &MockScreen{}
u := NewUserScreen(SimpleID("foo"), s)
+
+ cfg := u.Config()
+ cfg.Theme = MonoTheme // Mono
+ u.SetConfig(cfg)
+
m := NewAnnounceMsg("hello")
defer u.Close()
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"), `\e[38;05;245mfoo`+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(`\e[38;05;245mAA:BB` + Reset + ` [\e[38;05;88mfoo\e[0m] hello` + Newline)
+ if !reflect.DeepEqual(actual, expected) {
+ t.Errorf("Wrong screen output:\n Got: `%q`;\nWant: `%q`", actual, expected)
+ }
+}