hdmistat/internal/fbdraw/header_wrapper_test.go
2025-07-24 16:09:00 +02:00

66 lines
1.4 KiB
Go

package fbdraw_test
import (
"testing"
"git.eeqj.de/sneak/hdmistat/internal/fbdraw"
)
// SimpleGenerator is a test generator
type SimpleGenerator struct {
width, height int
}
func (s *SimpleGenerator) Init(width, height int) error {
s.width = width
s.height = height
return nil
}
func (s *SimpleGenerator) GenerateFrame(grid *fbdraw.CharGrid) error {
writer := fbdraw.NewGridWriter(grid)
writer.MoveAbs(s.width/2-5, s.height/2)
writer.SetColor(fbdraw.White)
writer.Write("Test Content")
return nil
}
func (s *SimpleGenerator) FramesPerSecond() float64 {
return 1.0
}
func TestHeaderWrapper(t *testing.T) {
// Create a simple generator
simple := &SimpleGenerator{}
// Wrap it with header
wrapped := fbdraw.NewHeaderWrapper(simple)
// Initialize with some dimensions
if err := wrapped.Init(80, 25); err != nil {
t.Fatalf("Failed to init: %v", err)
}
// Generate a frame
grid := fbdraw.NewCharGrid(80, 25)
if err := wrapped.GenerateFrame(grid); err != nil {
t.Fatalf("Failed to generate frame: %v", err)
}
// Check that header exists (line 3 should have horizontal rule)
hasRule := false
for x := 0; x < 80; x++ {
if grid.Cells[2][x].Rune == '─' {
hasRule = true
break
}
}
if !hasRule {
t.Error("Expected horizontal rule on line 3")
}
// Log the output for visual inspection
t.Logf("Generated frame with header:\n%s", grid.String())
}