forked from OSchip/llvm-project
91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
package liner
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestAppend(t *testing.T) {
|
|
var s State
|
|
s.AppendHistory("foo")
|
|
s.AppendHistory("bar")
|
|
|
|
var out bytes.Buffer
|
|
num, err := s.WriteHistory(&out)
|
|
if err != nil {
|
|
t.Fatal("Unexpected error writing history", err)
|
|
}
|
|
if num != 2 {
|
|
t.Fatalf("Expected 2 history entries, got %d", num)
|
|
}
|
|
|
|
s.AppendHistory("baz")
|
|
num, err = s.WriteHistory(&out)
|
|
if err != nil {
|
|
t.Fatal("Unexpected error writing history", err)
|
|
}
|
|
if num != 3 {
|
|
t.Fatalf("Expected 3 history entries, got %d", num)
|
|
}
|
|
|
|
s.AppendHistory("baz")
|
|
num, err = s.WriteHistory(&out)
|
|
if err != nil {
|
|
t.Fatal("Unexpected error writing history", err)
|
|
}
|
|
if num != 3 {
|
|
t.Fatalf("Expected 3 history entries after duplicate append, got %d", num)
|
|
}
|
|
|
|
s.AppendHistory("baz")
|
|
|
|
}
|
|
|
|
func TestHistory(t *testing.T) {
|
|
input := `foo
|
|
bar
|
|
baz
|
|
quux
|
|
dingle`
|
|
|
|
var s State
|
|
num, err := s.ReadHistory(strings.NewReader(input))
|
|
if err != nil {
|
|
t.Fatal("Unexpected error reading history", err)
|
|
}
|
|
if num != 5 {
|
|
t.Fatal("Wrong number of history entries read")
|
|
}
|
|
|
|
var out bytes.Buffer
|
|
num, err = s.WriteHistory(&out)
|
|
if err != nil {
|
|
t.Fatal("Unexpected error writing history", err)
|
|
}
|
|
if num != 5 {
|
|
t.Fatal("Wrong number of history entries written")
|
|
}
|
|
if strings.TrimSpace(out.String()) != input {
|
|
t.Fatal("Round-trip failure")
|
|
}
|
|
|
|
// Test reading with a trailing newline present
|
|
var s2 State
|
|
num, err = s2.ReadHistory(&out)
|
|
if err != nil {
|
|
t.Fatal("Unexpected error reading history the 2nd time", err)
|
|
}
|
|
if num != 5 {
|
|
t.Fatal("Wrong number of history entries read the 2nd time")
|
|
}
|
|
|
|
num, err = s.ReadHistory(strings.NewReader(input + "\n\xff"))
|
|
if err == nil {
|
|
t.Fatal("Unexpected success reading corrupted history", err)
|
|
}
|
|
if num != 5 {
|
|
t.Fatal("Wrong number of history entries read the 3rd time")
|
|
}
|
|
}
|