Files
nebara-tui/internal/ui/sixel/sixel_test.go
T

71 lines
1.5 KiB
Go

package sixel_test
import (
"testing"
"github.com/gdamore/tcell/v2"
"github.com/nebara/nebara-os/internal/ui/sixel"
)
func TestNewLogoRenderer(t *testing.T) {
r, err := sixel.NewLogoRenderer()
if err != nil {
t.Fatalf("NewLogoRenderer failed: %v", err)
}
if r.SixelDataLength() == 0 {
t.Error("SIXEL data should not be empty")
}
if r.CellCols() != sixel.DefaultLogoCellWidth {
t.Errorf("expected CellCols %d, got %d", sixel.DefaultLogoCellWidth, r.CellCols())
}
if r.CellRows() != sixel.DefaultLogoCellHeight {
t.Errorf("expected CellRows %d, got %d", sixel.DefaultLogoCellHeight, r.CellRows())
}
if !r.IsEnabled() {
t.Error("Renderer should be enabled by default")
}
}
func TestToggleEnabled(t *testing.T) {
r, err := sixel.NewLogoRenderer()
if err != nil {
t.Fatalf("NewLogoRenderer failed: %v", err)
}
r.SetEnabled(false)
if r.IsEnabled() {
t.Error("Renderer should be disabled")
}
r.SetEnabled(true)
if !r.IsEnabled() {
t.Error("Renderer should be re-enabled")
}
}
func TestDraw_SimulationScreenLock(t *testing.T) {
r, err := sixel.NewLogoRenderer()
if err != nil {
t.Fatalf("NewLogoRenderer failed: %v", err)
}
sim := tcell.NewSimulationScreen("")
if err := sim.Init(); err != nil {
t.Fatalf("simScreen init failed: %v", err)
}
defer sim.Fini()
sim.SetSize(120, 40)
// In test environment, emitSixel may fail if CONOUT$ or /dev/tty is unavailable in CI/headless,
// but LockRegion must be executed on the screen.
_ = r.Draw(sim, 4, 1)
// Invalidate and verify
r.Invalidate()
}