test default prefix/indent values + encoder errors
This commit is contained in:
parent
9d2219c3e4
commit
685da832df
|
@ -89,6 +89,83 @@ func TestDecodeEncode(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestErrors(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
Receiver interface{}
|
||||||
|
Input string
|
||||||
|
Err error
|
||||||
|
}{
|
||||||
|
{new(Line), "", nil},
|
||||||
|
{nil, "", ErrInvalidReceiver},
|
||||||
|
{[]byte{}, "", ErrInvalidReceiver},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, test := range tests {
|
||||||
|
|
||||||
|
// create reader/writer
|
||||||
|
r, w := strings.NewReader(test.Input), &bytes.Buffer{}
|
||||||
|
|
||||||
|
// parse input
|
||||||
|
var receiver interface{} = new(Line)
|
||||||
|
decoder := NewDecoder(r)
|
||||||
|
if err := decoder.Decode(receiver); err != nil {
|
||||||
|
t.Errorf("[%d] unexpected error <%s>", i, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// encode back to writer
|
||||||
|
receiver = test.Receiver
|
||||||
|
encoder := NewEncoder(w)
|
||||||
|
encoder.SetIndent("", "\t")
|
||||||
|
if err := encoder.Encode(receiver); err != test.Err {
|
||||||
|
t.Errorf("[%d] expected error <%s>, got <%s>", i, test.Err, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDefaultIndent(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
Input string
|
||||||
|
SetIndent []string
|
||||||
|
Output string
|
||||||
|
}{
|
||||||
|
{"section {\nkey value;\n}\n", []string{"*prefix*", "*indent*"}, "*prefix*section {\n*prefix**indent*key\t\tvalue;\n*prefix*}\n\n"},
|
||||||
|
{"section {\nkey value;\n}\n", nil, "section {\n\tkey\t\tvalue;\n}\n\n"},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, test := range tests {
|
||||||
|
|
||||||
|
// create reader/writer
|
||||||
|
r, w := strings.NewReader(test.Input), &bytes.Buffer{}
|
||||||
|
|
||||||
|
// parse input
|
||||||
|
receiver := new(Line)
|
||||||
|
decoder := NewDecoder(r)
|
||||||
|
if err := decoder.Decode(receiver); err != nil {
|
||||||
|
t.Errorf("[%d] unexpected error <%s>", i, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// encode back to writer
|
||||||
|
encoder := NewEncoder(w)
|
||||||
|
if test.SetIndent != nil && len(test.SetIndent) >= 2 {
|
||||||
|
encoder.SetIndent(test.SetIndent[0], test.SetIndent[1])
|
||||||
|
}
|
||||||
|
if err := encoder.Encode(receiver); err != nil {
|
||||||
|
t.Errorf("[%d] unexpected error <%s>", i, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// check equality
|
||||||
|
if w.String() != test.Output {
|
||||||
|
t.Errorf("[%d] expected '%s', got '%s'", i, escape(test.Output), escape(w.String()))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func escape(raw string) string {
|
func escape(raw string) string {
|
||||||
|
|
||||||
escaped := make([]rune, 0)
|
escaped := make([]rune, 0)
|
||||||
|
|
Loading…
Reference in New Issue