mirror of
https://github.com/jroimartin/gocui.git
synced 2025-04-30 13:48:54 +08:00
support new integration test pattern
This commit is contained in:
parent
dfd3eb22e1
commit
3a3ab26faa
16
gui.go
16
gui.go
@ -108,6 +108,8 @@ const (
|
|||||||
NORMAL PlayMode = iota
|
NORMAL PlayMode = iota
|
||||||
RECORDING
|
RECORDING
|
||||||
REPLAYING
|
REPLAYING
|
||||||
|
// for the new form of integration tests
|
||||||
|
REPLAYING_NEW
|
||||||
)
|
)
|
||||||
|
|
||||||
type Recording struct {
|
type Recording struct {
|
||||||
@ -116,8 +118,8 @@ type Recording struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type replayedEvents struct {
|
type replayedEvents struct {
|
||||||
keys chan *TcellKeyEventWrapper
|
Keys chan *TcellKeyEventWrapper
|
||||||
resizes chan *TcellResizeEventWrapper
|
Resizes chan *TcellResizeEventWrapper
|
||||||
}
|
}
|
||||||
|
|
||||||
type RecordingConfig struct {
|
type RecordingConfig struct {
|
||||||
@ -216,10 +218,10 @@ func NewGui(mode OutputMode, supportOverlaps bool, playMode PlayMode, headless b
|
|||||||
KeyEvents: []*TcellKeyEventWrapper{},
|
KeyEvents: []*TcellKeyEventWrapper{},
|
||||||
ResizeEvents: []*TcellResizeEventWrapper{},
|
ResizeEvents: []*TcellResizeEventWrapper{},
|
||||||
}
|
}
|
||||||
} else if playMode == REPLAYING {
|
} else if playMode == REPLAYING || playMode == REPLAYING_NEW {
|
||||||
g.ReplayedEvents = replayedEvents{
|
g.ReplayedEvents = replayedEvents{
|
||||||
keys: make(chan *TcellKeyEventWrapper),
|
Keys: make(chan *TcellKeyEventWrapper),
|
||||||
resizes: make(chan *TcellResizeEventWrapper),
|
Resizes: make(chan *TcellResizeEventWrapper),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1420,7 +1422,7 @@ func (g *Gui) replayRecording() {
|
|||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
timeWaited += 1
|
timeWaited += 1
|
||||||
if timeWaited >= timeToWait {
|
if timeWaited >= timeToWait {
|
||||||
g.ReplayedEvents.keys <- event
|
g.ReplayedEvents.Keys <- event
|
||||||
break middle
|
break middle
|
||||||
}
|
}
|
||||||
case <-g.stop:
|
case <-g.stop:
|
||||||
@ -1453,7 +1455,7 @@ func (g *Gui) replayRecording() {
|
|||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
timeWaited += 1
|
timeWaited += 1
|
||||||
if timeWaited >= timeToWait {
|
if timeWaited >= timeToWait {
|
||||||
g.ReplayedEvents.resizes <- event
|
g.ReplayedEvents.Resizes <- event
|
||||||
break middle2
|
break middle2
|
||||||
}
|
}
|
||||||
case <-g.stop:
|
case <-g.stop:
|
||||||
|
@ -232,11 +232,11 @@ func (g *Gui) timeSinceStart() int64 {
|
|||||||
// pollEvent get tcell.Event and transform it into gocuiEvent
|
// pollEvent get tcell.Event and transform it into gocuiEvent
|
||||||
func (g *Gui) pollEvent() GocuiEvent {
|
func (g *Gui) pollEvent() GocuiEvent {
|
||||||
var tev tcell.Event
|
var tev tcell.Event
|
||||||
if g.PlayMode == REPLAYING {
|
if g.PlayMode == REPLAYING || g.PlayMode == REPLAYING_NEW {
|
||||||
select {
|
select {
|
||||||
case ev := <-g.ReplayedEvents.keys:
|
case ev := <-g.ReplayedEvents.Keys:
|
||||||
tev = (ev).toTcellEvent()
|
tev = (ev).toTcellEvent()
|
||||||
case ev := <-g.ReplayedEvents.resizes:
|
case ev := <-g.ReplayedEvents.Resizes:
|
||||||
tev = (ev).toTcellEvent()
|
tev = (ev).toTcellEvent()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
15
view.go
15
view.go
@ -465,6 +465,14 @@ func (v *View) Cursor() (x, y int) {
|
|||||||
return v.cx, v.cy
|
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,
|
// SetOrigin sets the origin position of the view's internal buffer,
|
||||||
// so the buffer starts to be printed from this point, which means that
|
// 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
|
// 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
|
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) {
|
func (v *View) SelectedPoint() (int, int) {
|
||||||
cx, cy := v.Cursor()
|
cx, cy := v.Cursor()
|
||||||
ox, oy := v.Origin()
|
ox, oy := v.Origin()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user