support new integration test pattern

This commit is contained in:
Jesse Duffield 2022-08-13 20:10:52 +10:00
parent dfd3eb22e1
commit 3a3ab26faa
3 changed files with 27 additions and 10 deletions

16
gui.go
View File

@ -108,6 +108,8 @@ const (
NORMAL PlayMode = iota
RECORDING
REPLAYING
// for the new form of integration tests
REPLAYING_NEW
)
type Recording struct {
@ -116,8 +118,8 @@ type Recording struct {
}
type replayedEvents struct {
keys chan *TcellKeyEventWrapper
resizes chan *TcellResizeEventWrapper
Keys chan *TcellKeyEventWrapper
Resizes chan *TcellResizeEventWrapper
}
type RecordingConfig struct {
@ -216,10 +218,10 @@ func NewGui(mode OutputMode, supportOverlaps bool, playMode PlayMode, headless b
KeyEvents: []*TcellKeyEventWrapper{},
ResizeEvents: []*TcellResizeEventWrapper{},
}
} else if playMode == REPLAYING {
} else if playMode == REPLAYING || playMode == REPLAYING_NEW {
g.ReplayedEvents = replayedEvents{
keys: make(chan *TcellKeyEventWrapper),
resizes: make(chan *TcellResizeEventWrapper),
Keys: make(chan *TcellKeyEventWrapper),
Resizes: make(chan *TcellResizeEventWrapper),
}
}
@ -1420,7 +1422,7 @@ func (g *Gui) replayRecording() {
case <-ticker.C:
timeWaited += 1
if timeWaited >= timeToWait {
g.ReplayedEvents.keys <- event
g.ReplayedEvents.Keys <- event
break middle
}
case <-g.stop:
@ -1453,7 +1455,7 @@ func (g *Gui) replayRecording() {
case <-ticker.C:
timeWaited += 1
if timeWaited >= timeToWait {
g.ReplayedEvents.resizes <- event
g.ReplayedEvents.Resizes <- event
break middle2
}
case <-g.stop:

View File

@ -232,11 +232,11 @@ func (g *Gui) timeSinceStart() int64 {
// pollEvent get tcell.Event and transform it into gocuiEvent
func (g *Gui) pollEvent() GocuiEvent {
var tev tcell.Event
if g.PlayMode == REPLAYING {
if g.PlayMode == REPLAYING || g.PlayMode == REPLAYING_NEW {
select {
case ev := <-g.ReplayedEvents.keys:
case ev := <-g.ReplayedEvents.Keys:
tev = (ev).toTcellEvent()
case ev := <-g.ReplayedEvents.resizes:
case ev := <-g.ReplayedEvents.Resizes:
tev = (ev).toTcellEvent()
}
} else {

15
view.go
View File

@ -465,6 +465,14 @@ func (v *View) Cursor() (x, y int) {
return v.cx, v.cy
}
func (v *View) CursorX() int {
return v.cx
}
func (v *View) CursorY() int {
return v.cy
}
// SetOrigin sets the origin position of the view's internal buffer,
// so the buffer starts to be printed from this point, which means that
// it is linked with the origin point of view. It can be used to
@ -1235,6 +1243,13 @@ func (v *View) SelectedLineIdx() int {
return seletedLineIdx
}
// expected to only be used in tests
func (v *View) SelectedLine() string {
line := v.lines[v.SelectedLineIdx()]
str := lineType(line).String()
return strings.Replace(str, "\x00", " ", -1)
}
func (v *View) SelectedPoint() (int, int) {
cx, cy := v.Cursor()
ox, oy := v.Origin()