2021-03-30 19:37:02 -04:00
|
|
|
package editor
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
func TestNewRow(t *testing.T) {
|
|
|
|
str := "abcdefg"
|
2021-03-31 14:32:43 -04:00
|
|
|
row := newRow(str)
|
2021-03-30 19:37:02 -04:00
|
|
|
|
|
|
|
got := string(row.chars)
|
|
|
|
want := str
|
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("Row chars not equal to original string. Row: %q, String: %q", row, str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRowSize(t *testing.T) {
|
|
|
|
str := "abcdefg"
|
2021-03-31 14:32:43 -04:00
|
|
|
row := newRow(str)
|
2021-03-30 19:37:02 -04:00
|
|
|
|
2021-03-31 14:32:43 -04:00
|
|
|
got := row.size()
|
2021-03-30 19:37:02 -04:00
|
|
|
want := 7
|
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("Row size not equal to number of runes in original string")
|
|
|
|
}
|
|
|
|
}
|
2021-03-31 19:17:04 -04:00
|
|
|
|
|
|
|
func TestRenderSize(t *testing.T) {
|
|
|
|
str := "\tabcdefg"
|
|
|
|
row := newRow(str)
|
|
|
|
row.update()
|
|
|
|
|
|
|
|
got := row.rSize()
|
|
|
|
want := 11
|
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("Row rsize not equal to number of runes in original string")
|
|
|
|
}
|
|
|
|
}
|
2021-04-01 16:17:13 -04:00
|
|
|
|
|
|
|
type insertRune struct {
|
|
|
|
initial string
|
2021-04-01 16:47:32 -04:00
|
|
|
ch rune
|
|
|
|
at int
|
2021-04-01 16:17:13 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
var insertRuneTests = []insertRune{
|
|
|
|
{"abde", 'c', 2},
|
|
|
|
{"bcde", 'a', 0},
|
|
|
|
{"abcd", 'e', 4},
|
|
|
|
{"abcd", 'e', 17},
|
|
|
|
{"abcd", 'e', -2},
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestInsertRune(t *testing.T) {
|
|
|
|
for _, test := range insertRuneTests {
|
|
|
|
row := newRow(test.initial)
|
|
|
|
row.insertRune(test.ch, test.at)
|
|
|
|
|
|
|
|
if row.size() != 5 {
|
|
|
|
t.Errorf("Row size after inserting rune at index [%d] is %d, should be %d", test.at, row.size(), 5)
|
|
|
|
}
|
|
|
|
|
|
|
|
got := row.toString()
|
|
|
|
want := "abcde"
|
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("Row after update is '%s', should be '%s'", got, want)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|