File: line_array_test.go

package info (click to toggle)
micro 2.0.15-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,128 kB
  • sloc: sh: 265; makefile: 77; xml: 53
file content (61 lines) | stat: -rw-r--r-- 1,875 bytes parent folder | download | duplicates (4)
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
51
52
53
54
55
56
57
58
59
60
61
package buffer

import (
	"strings"
	"testing"

	"github.com/stretchr/testify/assert"
)

var unicode_txt = `An preost wes on leoden, Laȝamon was ihoten
He wes Leovenaðes sone -- liðe him be Drihten.
He wonede at Ernleȝe at æðelen are chirechen,
Uppen Sevarne staþe, sel þar him þuhte,
Onfest Radestone, þer he bock radde.`

var la *LineArray

func init() {
	reader := strings.NewReader(unicode_txt)
	la = NewLineArray(uint64(len(unicode_txt)), FFAuto, reader)
}

func TestSplit(t *testing.T) {
	la.insert(Loc{17, 1}, []byte{'\n'})
	assert.Equal(t, len(la.lines), 6)
	sub1 := la.Substr(Loc{0, 1}, Loc{17, 1})
	sub2 := la.Substr(Loc{0, 2}, Loc{30, 2})

	assert.Equal(t, []byte("He wes Leovenaðes"), sub1)
	assert.Equal(t, []byte(" sone -- liðe him be Drihten."), sub2)
}

func TestJoin(t *testing.T) {
	la.remove(Loc{47, 1}, Loc{0, 2})
	assert.Equal(t, len(la.lines), 5)
	sub := la.Substr(Loc{0, 1}, Loc{47, 1})
	bytes := la.Bytes()

	assert.Equal(t, []byte("He wes Leovenaðes sone -- liðe him be Drihten."), sub)
	assert.Equal(t, unicode_txt, string(bytes))
}

func TestInsert(t *testing.T) {
	la.insert(Loc{20, 3}, []byte(" foobar"))
	sub1 := la.Substr(Loc{0, 3}, Loc{50, 3})

	assert.Equal(t, []byte("Uppen Sevarne staþe, foobar sel þar him þuhte,"), sub1)

	la.insert(Loc{25, 2}, []byte("H̼̥̯͇͙̕͘͞e̸̦̞̠̣̰͙̼̥̦̼̖̬͕͕̰̯̫͇̕ĺ̜̠̩̯̯͙̼̭̠͕̮̞͜l̶͓̫̞̮͈͞ͅo̸͔͙̳̠͈̮̼̳͙̥̲͜͠"))

	sub2 := la.Substr(Loc{0, 2}, Loc{60, 2})
	assert.Equal(t, []byte("He wonede at Ernleȝe at æH̼̥̯͇͙̕͘͞e̸̦̞̠̣̰͙̼̥̦̼̖̬͕͕̰̯̫͇̕ĺ̜̠̩̯̯͙̼̭̠͕̮̞͜l̶͓̫̞̮͈͞ͅo̸͔͙̳̠͈̮̼̳͙̥̲͜͠ðelen are chirechen,"), sub2)
}

func TestRemove(t *testing.T) {
	la.remove(Loc{20, 3}, Loc{27, 3})
	la.remove(Loc{25, 2}, Loc{30, 2})

	bytes := la.Bytes()
	assert.Equal(t, unicode_txt, string(bytes))
}