diff --git a/SBHPFv1/serializer_test.go b/SBHPFv1/serializer_test.go index e6c649c..2c3ca34 100644 --- a/SBHPFv1/serializer_test.go +++ b/SBHPFv1/serializer_test.go @@ -18,12 +18,14 @@ var ( } node_ser_targetbytes = []byte{ - // ROOT NODE + // -- ROOT NODE: HEADER 0x33, 0x00, 0x00, 0x00, // Node size = 33 0x02, 0x00, // Property count = 2 0x01, 0x00, // Child count = 1 - 0x06, // Name length = 6 + 0x06, // Name length = 6 + // -- ROOT NODE: NAME 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, // Node name = "player" + // -- ROOT NODE: PROPERTIES // ROOT NODE -> PROPERTY A 0x06, // Key length = 6 0x0b, // Value type = bool @@ -34,6 +36,7 @@ var ( 0x03, // Value type = 16-bit signed int 0x6c, 0x65, 0x76, 0x65, 0x6c, // Key = "level" 0x1b, 0x00, // Value = 27 + // -- ROOT NODE: CHILDREN // ROOT NODE -> CHILD NODE 0x12, 0x00, 0x00, 0x00, // Node size = 12 0x00, 0x00, // Property count = 0 @@ -41,6 +44,25 @@ var ( 0x09, // Name length = 9 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, // Node name = "inventory" } + + full_ser_targetbytes = []byte{ + // -- FILE HEADER + 0x01, // Version flag = 1 + 0x00, // Feature flag = 0 + // -- ROOT NODE: HEADER + 0x16, 0x00, 0x00, 0x00, // Node size = 16 + 0x01, 0x00, // Property count = 1 + 0x00, 0x00, // Child count = 0 + 0x04, // Name length = 4 + // -- ROOT NODE: NAME + 0x75, 0x73, 0x65, 0x72, // Node name = "user" + // -- ROOT NODE: PROPERTIES + // ROOT NODE -> PROPERTY + 0x06, // Key length = 6 + 0x0b, // Value type = bool + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, // Key = "active" + 0x01, // Value = true + } ) func TestPropertySerialization(t *testing.T) { @@ -50,8 +72,8 @@ func TestPropertySerialization(t *testing.T) { Value: "zervo", } - buf := &bytes.Buffer{} - err := sbhpfv1.SerializeProperty(buf, prop) + var buf bytes.Buffer + err := sbhpfv1.SerializeProperty(&buf, prop) if err != nil { t.Fatalf("Property serialization failed: %v", err) } @@ -89,13 +111,38 @@ func TestNodeSerialization(t *testing.T) { }, } - var w bytes.Buffer - err := sbhpfv1.SerializeNodeStream(&w, &node) + var buf bytes.Buffer + err := sbhpfv1.SerializeNodeBuffered(&buf, &node) if err != nil { t.Fatalf("Node serialization failed: %v", err) } - if !slices.Equal(w.Bytes(), node_ser_targetbytes) { - t.Fatalf("Node serialization generated bad data: %v", w.Bytes()) + if !slices.Equal(buf.Bytes(), node_ser_targetbytes) { + t.Fatalf("Node serialization generated bad data: %v", buf.Bytes()) + } +} + +func TestFullSerialization(t *testing.T) { + prop := sbhpfv1.Property{ + Key: "active", + Type: sbhpfv1.TypeBool, + Value: true, + } + + node := sbhpfv1.Node{ + Name: "user", + Properties: []sbhpfv1.Property{ + prop, + }, + } + + var buf bytes.Buffer + err := sbhpfv1.SerializeBuffered(&buf, &node) + if err != nil { + t.Fatalf("Full tree serialization failed: %v", err) + } + + if !slices.Equal(buf.Bytes(), full_ser_targetbytes) { + t.Fatalf("Full tree serialization generated bad data: %v", buf.Bytes()) } }