71 lines
1.5 KiB
Go
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()
|
|
}
|