From 8e79fdd50bc7e8c2962d5fe9459249c36a17d64b Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 9 Oct 2022 04:04:26 +0200 Subject: [PATCH] test: add screen manipulation tests --- screen_test.go | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 screen_test.go diff --git a/screen_test.go b/screen_test.go new file mode 100644 index 0000000..5e3d4e6 --- /dev/null +++ b/screen_test.go @@ -0,0 +1,76 @@ +package tea + +import ( + "bytes" + "testing" +) + +func TestClearMsg(t *testing.T) { + tests := []struct { + name string + cmds sequenceMsg + expected string + }{ + { + name: "clear_screen", + cmds: []Cmd{ClearScreen}, + expected: "\x1b[?25l\x1b[2J\x1b[1;1H\x1b[1;1Hsuccess\r\n\x1b[0D\x1b[2K\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + { + name: "altscreen", + cmds: []Cmd{EnterAltScreen, ExitAltScreen}, + expected: "\x1b[?25l\x1b[?1049h\x1b[2J\x1b[1;1H\x1b[1;1H\x1b[?1049lsuccess\r\n\x1b[0D\x1b[2K\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + { + name: "altscreen_autoexit", + cmds: []Cmd{EnterAltScreen}, + expected: "\x1b[?25l\x1b[?1049h\x1b[2J\x1b[1;1H\x1b[1;1Hsuccess\r\n\x1b[2;0H\x1b[2K\x1b[?1049l\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + { + name: "mouse_cellmotion", + cmds: []Cmd{EnableMouseCellMotion}, + expected: "\x1b[?25l\x1b[?1002hsuccess\r\n\x1b[0D\x1b[2K\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + { + name: "mouse_allmotion", + cmds: []Cmd{EnableMouseAllMotion}, + expected: "\x1b[?25l\x1b[?1003hsuccess\r\n\x1b[0D\x1b[2K\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + { + name: "mouse_disable", + cmds: []Cmd{EnableMouseAllMotion, DisableMouse}, + expected: "\x1b[?25l\x1b[?1003h\x1b[?1002l\x1b[?1003lsuccess\r\n\x1b[0D\x1b[2K\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + { + name: "cursor_hide", + cmds: []Cmd{HideCursor}, + expected: "\x1b[?25l\x1b[?25lsuccess\r\n\x1b[0D\x1b[2K\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + { + name: "cursor_hideshow", + cmds: []Cmd{HideCursor, ShowCursor}, + expected: "\x1b[?25l\x1b[?25l\x1b[?25hsuccess\r\n\x1b[0D\x1b[2K\x1b[?1002l\x1b[?1003l\x1b[?25h", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + var buf bytes.Buffer + var in bytes.Buffer + + m := &testModel{} + p := NewProgram(m, WithInput(&in), WithOutput(&buf)) + + test.cmds = append(test.cmds, Quit) + go p.Send(test.cmds) + + if _, err := p.Run(); err != nil { + t.Fatal(err) + } + + if buf.String() != test.expected { + t.Errorf("expected embedded sequence, got %q", buf.String()) + } + }) + } +}