2b28dfa528
Co-authored-by: Brannon King <countprimes@gmail.com>
80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
package txscript
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCreationParseLoopClaim(t *testing.T) {
|
|
|
|
r := require.New(t)
|
|
|
|
// OP_CLAIMNAME <Name> <Value> OP_2DROP OP_DROP <P2PKH>
|
|
script, err := ClaimNameScript("tester", "value")
|
|
r.NoError(err)
|
|
cs, err := ExtractClaimScript(script)
|
|
r.NoError(err)
|
|
r.Equal(byte(OP_CLAIMNAME), cs.Opcode)
|
|
r.Equal([]byte("tester"), cs.Name)
|
|
r.Equal([]byte("value"), cs.Value)
|
|
}
|
|
|
|
func TestCreationParseLoopUpdate(t *testing.T) {
|
|
|
|
r := require.New(t)
|
|
|
|
claimID := []byte("12345123451234512345")
|
|
claim, err := ClaimUpdateScript("tester", claimID, "value")
|
|
r.NoError(err)
|
|
cs, err := ExtractClaimScript(claim)
|
|
r.NoError(err)
|
|
r.Equal(byte(OP_UPDATECLAIM), cs.Opcode)
|
|
r.Equal([]byte("tester"), cs.Name)
|
|
r.Equal(claimID, cs.ClaimID)
|
|
r.Equal([]byte("value"), cs.Value)
|
|
}
|
|
|
|
func TestCreationParseLoopSupport(t *testing.T) {
|
|
|
|
r := require.New(t)
|
|
|
|
claimID := []byte("12345123451234512345")
|
|
|
|
// case 1: OP_SUPPORTCLAIM <Name> <ClaimID> OP_2DROP OP_DROP <P2PKH>
|
|
script, err := ClaimSupportScript("tester", claimID, nil)
|
|
r.NoError(err)
|
|
cs, err := ExtractClaimScript(script)
|
|
r.NoError(err)
|
|
|
|
r.Equal(byte(OP_SUPPORTCLAIM), cs.Opcode)
|
|
r.Equal([]byte("tester"), cs.Name)
|
|
r.Equal(claimID, cs.ClaimID)
|
|
r.Nil(cs.Value)
|
|
|
|
// case 2: OP_SUPPORTCLAIM <Name> <ClaimID> <Value> OP_2DROP OP_2DROP <P2PKH>
|
|
script, err = ClaimSupportScript("tester", claimID, []byte("value"))
|
|
r.NoError(err)
|
|
cs, err = ExtractClaimScript(script)
|
|
r.NoError(err)
|
|
|
|
r.Equal(byte(OP_SUPPORTCLAIM), cs.Opcode)
|
|
r.Equal([]byte("tester"), cs.Name)
|
|
r.Equal(claimID, cs.ClaimID)
|
|
r.Equal([]byte("value"), cs.Value)
|
|
|
|
}
|
|
|
|
func TestInvalidChars(t *testing.T) {
|
|
r := require.New(t)
|
|
|
|
script, err := ClaimNameScript("tester", "value")
|
|
r.NoError(err)
|
|
r.NoError(AllClaimsAreSane(script, true))
|
|
|
|
for i := range []byte(illegalChars) {
|
|
script, err := ClaimNameScript("a"+illegalChars[i:i+1], "value")
|
|
r.NoError(err)
|
|
r.Error(AllClaimsAreSane(script, true))
|
|
}
|
|
}
|