Add some tests
This commit is contained in:
parent
dbffe4b7c4
commit
5cc89d5b42
70
asv_test.go
Normal file
70
asv_test.go
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
package asv
|
||||||
|
|
||||||
|
import "io"
|
||||||
|
import "strings"
|
||||||
|
import "testing"
|
||||||
|
import "reflect"
|
||||||
|
|
||||||
|
func TestDecodeCollection (test *testing.T) {
|
||||||
|
decoder := NewDecoder(strings.NewReader(
|
||||||
|
"record\x1fone\x1erecord\x1ftwo\x1drecord one in group two\x1crecord one in file two" +
|
||||||
|
"\x1flots of \x1b\x1b\x1b\x1f\x1b\x1d\x1b\x1e\x1b\x1cescape sequences"))
|
||||||
|
got, err := decoder.ReadCollection()
|
||||||
|
testErr(test, err)
|
||||||
|
testEqual(test, "structures", got,
|
||||||
|
Collection {
|
||||||
|
File {
|
||||||
|
Group {
|
||||||
|
Record {
|
||||||
|
"record",
|
||||||
|
"one",
|
||||||
|
},
|
||||||
|
Record {
|
||||||
|
"record",
|
||||||
|
"two",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Group {
|
||||||
|
Record {
|
||||||
|
"record one in group two",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
File {
|
||||||
|
Group {
|
||||||
|
Record {
|
||||||
|
"record one in file two",
|
||||||
|
"lots of \x1b\x1f\x1d\x1e\x1cescape sequences",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDecodeRecord (test *testing.T) {
|
||||||
|
decoder := NewDecoder(strings.NewReader(
|
||||||
|
"record\x1fone"))
|
||||||
|
got, next, err := decoder.ReadRecord()
|
||||||
|
testEqual(test, "errors", err, io.EOF)
|
||||||
|
testEqual(test, "next", next, rune(0))
|
||||||
|
testEqual(test, "structures", got,
|
||||||
|
Record {
|
||||||
|
"record",
|
||||||
|
"one",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func testErr (test *testing.T, err error) {
|
||||||
|
if err != nil {
|
||||||
|
test.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testEqual (test *testing.T, desc string, got, correct any) {
|
||||||
|
if !reflect.DeepEqual(got, correct) {
|
||||||
|
test.Error(desc, "not equal")
|
||||||
|
test.Errorf("GOT:\n%v", got)
|
||||||
|
test.Errorf("CORRECT:\n%v", correct)
|
||||||
|
test.FailNow()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user