-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathscreen_handler_mock.go
50 lines (41 loc) · 979 Bytes
/
screen_handler_mock.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
type mockScreenHandler struct {
data [][]rune
unsynced [][]rune
keyChan chan interface{}
w int
h int
}
func (s *mockScreenHandler) close() {
}
func (s *mockScreenHandler) putStr(x, y int, b rune) {
s.unsynced[y][x] = b
}
func (s *mockScreenHandler) sync() {
for i := range s.unsynced {
copy(s.data[i], s.unsynced[i])
}
}
func (s *mockScreenHandler) clearStr(x, y int) {
s.putStr(x, y, '@')
}
func (s *mockScreenHandler) getSize() (int, int) {
return s.w, s.h
}
func (s *mockScreenHandler) pollKeyPress() interface{} {
return <-s.keyChan
}
func initMockScreenHandler(w, h int) screenHandler {
data := make([][]rune, h)
unsynced := make([][]rune, h)
c := make(chan interface{})
for i := range data {
data[i] = make([]rune, w)
unsynced[i] = make([]rune, w)
for j := range data[i] {
data[i][j] = '@'
unsynced[i][j] = '@'
}
}
return &mockScreenHandler{data: data, unsynced: unsynced, keyChan: c, w: w, h: h}
}