Initial sow-tools import
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package gff
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestRoundTripBinaryAndJSON(t *testing.T) {
|
||||
original := Document{
|
||||
FileType: "UTC ",
|
||||
FileVersion: "V3.2",
|
||||
Root: Struct{
|
||||
Type: 0,
|
||||
Fields: []Field{
|
||||
NewField("Tag", StringValue("test_creature")),
|
||||
NewField("TemplateResRef", ResRefValue("nw_test")),
|
||||
NewField("HP", IntValue(12)),
|
||||
NewField("Position", Vector{X: 1.25, Y: 2.5, Z: 3.75}),
|
||||
NewField("Inventory", ListValue{
|
||||
{
|
||||
Type: 1,
|
||||
Fields: []Field{
|
||||
NewField("Slot", DWordValue(0)),
|
||||
NewField("ResRef", ResRefValue("itm_sword")),
|
||||
},
|
||||
},
|
||||
}),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
var binaryBuf bytes.Buffer
|
||||
if err := Write(&binaryBuf, original); err != nil {
|
||||
t.Fatalf("write binary: %v", err)
|
||||
}
|
||||
|
||||
decoded, err := Read(bytes.NewReader(binaryBuf.Bytes()))
|
||||
if err != nil {
|
||||
t.Fatalf("read binary: %v", err)
|
||||
}
|
||||
|
||||
left, err := json.Marshal(original)
|
||||
if err != nil {
|
||||
t.Fatalf("marshal original json: %v", err)
|
||||
}
|
||||
right, err := json.Marshal(decoded)
|
||||
if err != nil {
|
||||
t.Fatalf("marshal decoded json: %v", err)
|
||||
}
|
||||
|
||||
if string(left) != string(right) {
|
||||
t.Fatalf("roundtrip mismatch\noriginal: %s\ndecoded: %s", left, right)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user