package zitcli
import (
"bufio"
"strings"
"testing"
)
func TestParseCrosslink(t *testing.T) {
stream := "crosslink 1\n" +
"checkin aa11 890923558000\n" +
"comment 22\ninitial empty check-in\n" +
"tag *branch * trunk\n" +
"tag *sym-trunk *\n" +
"end\n" +
"checkin bb22 893869787000 aa11\n" +
"user first\\slast\n" +
"comment 10\nmulti\nne\\s\n" + // raw bytes, newline inside
"file M src/main.c\n" +
"file D old\\sname.txt\n" +
"end\n" +
"checkin cc33 900000000000 bb22\n" +
"comment 0\n\n" +
"files unknown\n" +
"end\n"
var got []CrosslinkRecord
if err := parseCrosslink(bufio.NewReader(strings.NewReader(stream)),
func(r CrosslinkRecord) error { got = append(got, r); return nil }); err != nil {
t.Fatal(err)
}
if len(got) != 3 {
t.Fatalf("records = %d", len(got))
}
a, b, c := got[0], got[1], got[2]
if a.User != "anonymous" || a.Comment != "initial empty check-in" ||
len(a.Tags) != 2 || a.Tags[0].Value != "trunk" || !a.FilesKnown {
t.Fatalf("record a: %+v", a)
}
if b.User != "first last" || b.Comment != "multi\nne\\s" ||
len(b.Changes) != 2 || b.Changes[1] != "old name.txt" ||
b.Parents[0] != "aa11" {
t.Fatalf("record b: %+v", b)
}
if c.FilesKnown || c.Comment != "" {
t.Fatalf("record c: %+v", c)
}
}