7 "github.com/stretchr/testify/assert"
10 var unicode_txt = `An preost wes on leoden, Laȝamon was ihoten
11 He wes Leovenaðes sone -- liðe him be Drihten.
12 He wonede at Ernleȝe at æðelen are chirechen,
13 Uppen Sevarne staþe, sel þar him þuhte,
14 Onfest Radestone, þer he bock radde.`
19 reader := strings.NewReader(unicode_txt)
20 la = NewLineArray(uint64(len(unicode_txt)), FFAuto, reader)
23 func TestSplit(t *testing.T) {
24 la.insert(Loc{17, 1}, []byte{'\n'})
25 assert.Equal(t, len(la.lines), 6)
26 sub1 := la.Substr(Loc{0, 1}, Loc{17, 1})
27 sub2 := la.Substr(Loc{0, 2}, Loc{30, 2})
29 assert.Equal(t, []byte("He wes Leovenaðes"), sub1)
30 assert.Equal(t, []byte(" sone -- liðe him be Drihten."), sub2)
33 func TestJoin(t *testing.T) {
34 la.remove(Loc{47, 1}, Loc{0, 2})
35 assert.Equal(t, len(la.lines), 5)
36 sub := la.Substr(Loc{0, 1}, Loc{47, 1})
39 assert.Equal(t, []byte("He wes Leovenaðes sone -- liðe him be Drihten."), sub)
40 assert.Equal(t, unicode_txt, string(bytes))
43 func TestInsert(t *testing.T) {
44 la.insert(Loc{20, 3}, []byte(" foobar"))
45 sub1 := la.Substr(Loc{0, 3}, Loc{50, 3})
47 assert.Equal(t, []byte("Uppen Sevarne staþe, foobar sel þar him þuhte,"), sub1)
49 la.insert(Loc{25, 2}, []byte("ಮಣ್ಣಾಗಿ"))
50 sub2 := la.Substr(Loc{0, 2}, Loc{60, 2})
51 assert.Equal(t, []byte("He wonede at Ernleȝe at æಮಣ್ಣಾಗಿðelen are chirechen,"), sub2)
54 func TestRemove(t *testing.T) {
55 la.remove(Loc{20, 3}, Loc{27, 3})
56 la.remove(Loc{25, 2}, Loc{32, 2})
59 assert.Equal(t, unicode_txt, string(bytes))