114 lines
2.6 KiB
Go
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")
|
|
}
|
|
}
|