package ui
import "testing"
var hell = Editor{
text: [][]rune{{'h', 'e', 'l', 'l'}},
textWidth: []int{0, 1, 2, 3, 4},
cursorIdx: 4,
offsetIdx: 0,
width: 5,
}
func assertEditorEq(t *testing.T, actual, expected Editor) {
if len(actual.text) != len(expected.text) {
t.Errorf("expected text len to be %d, got %d\n", len(expected.text), len(actual.text))
} else {
for i := 0; i < len(actual.text); i++ {
a := actual.text[0][i]
e := expected.text[0][i]
if a != e {
t.Errorf("expected rune #%d to be '%c', got '%c'\n", i, e, a)
}
}
}
if len(actual.textWidth) != len(expected.textWidth) {
t.Errorf("expected textWidth len to be %d, got %d\n", len(expected.textWidth), len(actual.textWidth))
} else {
for i := 0; i < len(actual.textWidth); i++ {
a := actual.textWidth[i]
e := expected.textWidth[i]
if a != e {
t.Errorf("expected width #%d to be %d, got %d\n", i, e, a)
}
}
}
if actual.cursorIdx != expected.cursorIdx {
t.Errorf("expected cursorIdx to be %d, got %d\n", expected.cursorIdx, actual.cursorIdx)
}
if actual.offsetIdx != expected.offsetIdx {
t.Errorf("expected offsetIdx to be %d, got %d\n", expected.offsetIdx, actual.offsetIdx)
}
if actual.width != expected.width {
t.Errorf("expected width to be %d, got %d\n", expected.width, actual.width)
}
}
func TestOneLetter(t *testing.T) {
e := NewEditor(nil)
e.Resize(5)
e.PutRune('h')
assertEditorEq(t, e, Editor{
text: [][]rune{{'h'}},
textWidth: []int{0, 1},
cursorIdx: 1,
offsetIdx: 0,
width: 5,
})
}
func TestFourLetters(t *testing.T) {
e := NewEditor(nil)
e.Resize(5)
e.PutRune('h')
e.PutRune('e')
e.PutRune('l')
e.PutRune('l')
assertEditorEq(t, e, hell)
}
func TestOneLeft(t *testing.T) {
e := NewEditor(nil)
e.Resize(5)
e.PutRune('h')
e.PutRune('l')
e.Left()
e.PutRune('e')
e.PutRune('l')
e.Right()
assertEditorEq(t, e, hell)
}
func TestOneRem(t *testing.T) {
e := NewEditor(nil)
e.Resize(5)
e.PutRune('h')
e.PutRune('l')
e.RemRune()
e.PutRune('e')
e.PutRune('l')
e.PutRune('l')
assertEditorEq(t, e, hell)
}
func TestLeftAndRem(t *testing.T) {
e := NewEditor(nil)
e.Resize(5)
e.PutRune('h')
e.PutRune('l')
e.PutRune('e')
e.Left()
e.RemRune()
e.Right()
e.PutRune('l')
e.PutRune('l')
assertEditorEq(t, e, hell)
}