+++ /dev/null
-package compiler
-
-import (
- "encoding/hex"
- "strings"
- "testing"
-
- chainjson "github.com/vapor/encoding/json"
-
- "github.com/vapor/equity/compiler/equitytest"
-)
-
-func TestCompile(t *testing.T) {
- cases := []struct {
- name string
- contract string
- want string
- }{
- {
- "TrivialLock",
- equitytest.TrivialLock,
- "51",
- },
- {
- "LockWithPublicKey",
- equitytest.LockWithPublicKey,
- "ae7cac",
- },
- {
- "LockWithPublicKeyHash",
- equitytest.LockWithPKHash,
- "5279aa887cae7cac",
- },
- {
- "LockWith2of3Keys",
- equitytest.LockWith2of3Keys,
- "537a547a526bae71557a536c7cad",
- },
- {
- "LockToOutput",
- equitytest.LockToOutput,
- "00c3c251547ac1",
- },
- {
- "TradeOffer",
- equitytest.TradeOffer,
- "547a6413000000007b7b51547ac1631a000000547a547aae7cac",
- },
- {
- "EscrowedTransfer",
- equitytest.EscrowedTransfer,
- "537a641a000000537a7cae7cac6900c3c251557ac16328000000537a7cae7cac6900c3c251547ac1",
- },
- {
- "RevealPreimage",
- equitytest.RevealPreimage,
- "7caa87",
- },
- {
- "PriceChanger",
- equitytest.PriceChanger,
- "557a6432000000557a5479ae7cac6900c3c25100597a89587a89587a89587a89557a890274787e008901c07ec1633a000000007b537a51567ac1",
- },
- {
- "TestDefineVar",
- equitytest.TestDefineVar,
- "52797b937b7887916987",
- },
- {
- "TestAssignVar",
- equitytest.TestAssignVar,
- "7b7b9387",
- },
- {
- "TestSigIf",
- equitytest.TestSigIf,
- "53797b879169765379a09161641c00000052795279a0696321000000765279a069",
- },
- {
- "TestIfAndMultiClause",
- equitytest.TestIfAndMultiClause,
- "7b641f0000007087916976547aa09161641a000000765379a06963240000007b7bae7cac",
- },
- {
- "TestIfNesting",
- equitytest.TestIfNesting,
- "7b644400000054795279879169765579a09161643500000052795479a091616429000000765379a06952795579879169633a000000765479a06953797b8791635c0000007654798791695279a091616459000000527978a0697d8791",
- },
- {
- "TestConstantMath",
- equitytest.TestConstantMath,
- "765779577a935a93887c0431323330aa887c06737472696e67aa887c91697b011493879a",
- },
- }
- for _, c := range cases {
- t.Run(c.name, func(t *testing.T) {
- r := strings.NewReader(c.contract)
- compiled, err := Compile(r)
- if err != nil {
- t.Fatal(err)
- }
-
- contract := compiled[len(compiled)-1]
- got := []byte(contract.Body)
-
- want, err := hex.DecodeString(c.want)
- if err != nil {
- t.Fatal(err)
- }
-
- if string(got) != string(want) {
- t.Errorf("%s got %s\nwant %s", c.name, hex.EncodeToString(got), hex.EncodeToString(want))
- }
- })
- }
-}
-
-func mustDecodeHex(h string) *chainjson.HexBytes {
- bits, err := hex.DecodeString(h)
- if err != nil {
- panic(err)
- }
- result := chainjson.HexBytes(bits)
- return &result
-}