go-lns/pkg/primitives/covenant_binary_test.go
Virgil a677b171ad test(ax): add filename-stem Good/Bad/Ugly triads
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-04 09:34:08 +00:00

114 lines
2.6 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package primitives
import "testing"
func TestCovenantBinaryRoundTrip(t *testing.T) {
original := Covenant{}
original.SetFinalize(
Hash{43, 44, 45},
188,
[]byte("final"),
12,
21,
34,
Hash{46, 47, 48},
)
encoded, err := original.MarshalBinary()
if err != nil {
t.Fatalf("MarshalBinary returned error: %v", err)
}
if got := original.GetVarSize(); got != len(encoded) {
t.Fatalf("GetVarSize() = %d, want encoded length %d", got, len(encoded))
}
var decoded Covenant
if err := decoded.UnmarshalBinary(encoded); err != nil {
t.Fatalf("UnmarshalBinary returned error: %v", err)
}
if decoded.Type != original.Type {
t.Fatalf("decoded type = %d, want %d", decoded.Type, original.Type)
}
if decoded.Len() != original.Len() {
t.Fatalf("decoded item count = %d, want %d", decoded.Len(), original.Len())
}
for i := range original.Items {
if string(decoded.Items[i]) != string(original.Items[i]) {
t.Fatalf("decoded item %d = %x, want %x", i, decoded.Items[i], original.Items[i])
}
}
}
func TestCovenantBinaryZeroValue(t *testing.T) {
var original Covenant
encoded, err := original.MarshalBinary()
if err != nil {
t.Fatalf("MarshalBinary returned error: %v", err)
}
if got := original.GetVarSize(); got != len(encoded) {
t.Fatalf("GetVarSize() = %d, want encoded length %d", got, len(encoded))
}
var decoded Covenant
if err := decoded.UnmarshalBinary(encoded); err != nil {
t.Fatalf("UnmarshalBinary returned error: %v", err)
}
if decoded.Type != 0 || decoded.Len() != 0 {
t.Fatalf("decoded zero value = %+v, want zero value", decoded)
}
}
func TestCovenantBinary_Function_Good(t *testing.T) {
cov := Covenant{}
cov.SetFinalize(
Hash{43, 44, 45},
188,
[]byte("final"),
12,
21,
34,
Hash{46, 47, 48},
)
raw, err := cov.MarshalBinary()
if err != nil {
t.Fatalf("MarshalBinary returned error: %v", err)
}
var decoded Covenant
if err := decoded.UnmarshalBinary(raw); err != nil {
t.Fatalf("UnmarshalBinary returned error: %v", err)
}
if decoded.Type != cov.Type || decoded.Len() != cov.Len() {
t.Fatalf("decoded covenant = %+v, want %+v", decoded, cov)
}
}
func TestCovenantBinary_Function_Bad(t *testing.T) {
var cov Covenant
if err := cov.UnmarshalBinary(nil); err == nil {
t.Fatal("UnmarshalBinary should reject short buffers")
}
}
func TestCovenantBinary_Function_Ugly(t *testing.T) {
var cov Covenant
raw, err := cov.MarshalBinary()
if err != nil {
t.Fatalf("MarshalBinary returned error: %v", err)
}
if len(raw) == 0 {
t.Fatal("MarshalBinary should produce a compact encoding")
}
}