hdmistat/internal/layout/draw_test.go
2025-07-24 16:09:00 +02:00

82 lines
1.8 KiB
Go

package layout
import (
"testing"
"git.eeqj.de/sneak/hdmistat/internal/fbdraw"
)
func TestBasicDrawing(t *testing.T) {
// Create a small grid for testing
grid := fbdraw.NewCharGrid(40, 10)
draw := NewDraw(grid)
// Clear the screen
draw.Clear()
// Draw some text
draw.Color(Color("white")).Text(5, 2, "Hello")
draw.TextCenter(0, 4, "Centered")
// Create a sub-grid with border
subGrid := draw.Grid(1, 1, 38, 8)
subGrid.Border(Color("gray50"))
// Basic checks
if grid.Width != 40 {
t.Errorf("Expected width 40, got %d", grid.Width)
}
if grid.Height != 10 {
t.Errorf("Expected height 10, got %d", grid.Height)
}
// Check that some text was written (not all cells are empty)
hasContent := false
for y := 0; y < grid.Height; y++ {
for x := 0; x < grid.Width; x++ {
if grid.Cells[y][x].Rune != ' ' {
hasContent = true
break
}
}
}
if !hasContent {
t.Error("Expected some content in the grid, but all cells are empty")
}
// Print the grid for visual inspection
t.Logf("Rendered grid:\n%s", grid)
}
func TestHelloWorldScenario(t *testing.T) {
// Simulate the hello world scenario
grid := fbdraw.NewCharGrid(80, 25)
draw := NewDraw(grid)
draw.Clear()
centerY := grid.Height / 2
draw.Color(Color("cyan")).Bold()
draw.TextCenter(0, centerY-2, "Hello World")
draw.Color(Color("white")).Plain()
draw.TextCenter(0, centerY, "12:34:56")
draw.Color(Color("gray60"))
draw.TextCenter(0, centerY+2, "Uptime: 1:23")
borderGrid := draw.Grid(2, 2, grid.Width-4, grid.Height-4)
borderGrid.Border(Color("gray30"))
// Check that the grid has the expected content
gridStr := grid.String()
t.Logf("Hello World grid:\n%s", gridStr)
// Very basic check - just ensure it's not empty
if len(gridStr) == 0 {
t.Error("Grid string is empty")
}
}