Initial patterm project
This commit is contained in:
33
internal/app/screen_renderer_test.go
Normal file
33
internal/app/screen_renderer_test.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/harrybrwn/patterm/internal/vt"
|
||||
)
|
||||
|
||||
func TestRenderScreenSnapshotClipsRowsToViewport(t *testing.T) {
|
||||
layout := newTerminalLayout(20, 5)
|
||||
got := string(renderScreenSnapshot("abcdefghijklmnopqrstuvwxy\nsecond", vt.CursorState{}, layout))
|
||||
if strings.Contains(got, "uvwxy") {
|
||||
t.Fatalf("line leaked past viewport width: %q", got)
|
||||
}
|
||||
if !strings.Contains(got, "\x1b[2;1Habcdefghijklmnopqrst") {
|
||||
t.Fatalf("first row not drawn at viewport top: %q", got)
|
||||
}
|
||||
if !strings.Contains(got, "\x1b[3;1Hsecond ") {
|
||||
t.Fatalf("second row not padded in viewport: %q", got)
|
||||
}
|
||||
if !strings.Contains(got, "\x1b[4;1H ") {
|
||||
t.Fatalf("blank viewport row not cleared: %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderScreenSnapshotPlacesCursorInsideViewport(t *testing.T) {
|
||||
layout := newTerminalLayout(20, 5)
|
||||
got := string(renderScreenSnapshot("abc", vt.CursorState{Col: 2, Row: 1, Visible: true}, layout))
|
||||
if !strings.HasSuffix(got, "\x1b[?25h\x1b[3;3H") {
|
||||
t.Fatalf("cursor not placed inside viewport: %q", got)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user