internal/site/mark_test.go
Ref: Size: 2.3 KiB History
package site
import (
"strings"
"testing"
)
func TestMarkBitmapFromGohu11(t *testing.T) {
f, err := parseBDF(gohu11)
if err != nil {
t.Fatal(err)
}
pix, err := markBitmap(f)
if err != nil {
t.Fatal(err)
}
want := strings.Join([]string{
"###.#####.###",
"#...#.......#",
"#...#.......#",
"#...####....#",
"#...#.......#",
"#...#.......#",
"#...#.......#",
"#...#####...#",
"###.......###",
"",
}, "\n")
if got := bitmapString(pix); got != want {
t.Errorf("mark:\ngot:\n%swant:\n%s", got, want)
}
}
func TestMarkBitmapFromGohu14b(t *testing.T) {
f, err := parseBDF(gohu14b)
if err != nil {
t.Fatal(err)
}
pix, err := markBitmap(f)
if err != nil {
t.Fatal(err)
}
want := strings.Join([]string{
"####.........####",
"##...#######...##",
"##...##........##",
"##...##........##",
"##...##........##",
"##...#####.....##",
"##...##........##",
"##...##........##",
"##...##........##",
"##...#######...##",
"####.........####",
"",
}, "\n")
if got := bitmapString(pix); got != want {
t.Errorf("mark:\ngot:\n%swant:\n%s", got, want)
}
}
// The tab icon must land on whole device pixels at 16px, so its box is
// exactly 16 units — a 15-unit box would scale to 16 and blur.
func TestFaviconSVGBoxIsPixelExact(t *testing.T) {
f, err := parseBDF(gohu11)
if err != nil {
t.Fatal(err)
}
pix, err := markBitmap(f)
if err != nil {
t.Fatal(err)
}
svg, err := faviconSVG(pix, 16)
if err != nil {
t.Fatal(err)
}
for _, want := range []string{
`viewBox="0 0 16 16"`,
`shape-rendering="crispEdges"`,
"prefers-color-scheme: dark",
"#1a1a1a",
"#ececec",
} {
if !strings.Contains(svg, want) {
t.Errorf("favicon missing %q:\n%s", want, svg)
}
}
if n := strings.Count(svg, "<rect"); n != len(bitmapRuns(pix)) {
t.Errorf("favicon has %d rects, want one per ink run (%d)", n, len(bitmapRuns(pix)))
}
// Centred: 13x9 ink in a 16 box leaves one blank column at the left.
if !strings.Contains(svg, `x="1" y="3"`) {
t.Errorf("mark not centred in the box:\n%s", svg)
}
}
func TestFaviconSVGRejectsTooSmallABox(t *testing.T) {
f, err := parseBDF(gohu14b)
if err != nil {
t.Fatal(err)
}
pix, err := markBitmap(f)
if err != nil {
t.Fatal(err)
}
if _, err := faviconSVG(pix, 16); err == nil {
t.Error("want an error: the 17-wide bold mark does not fit a 16 box")
}
}