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() }