X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=protocol%2Fbc%2Ftypes%2Ftxoutput_test.go;h=9dc854a8d190e1d2e888d9e8fc2b8135a9465d55;hp=a6c4eba09bd8544c24d7cd7d72c769314c0588c2;hb=b9b4d0f75f4d5844b88e7d3bc33baae6a1e6ec4d;hpb=6bf0548429896ef136792b04c6dc21dfe95de016 diff --git a/protocol/bc/types/txoutput_test.go b/protocol/bc/types/txoutput_test.go index a6c4eba0..9dc854a8 100644 --- a/protocol/bc/types/txoutput_test.go +++ b/protocol/bc/types/txoutput_test.go @@ -13,7 +13,7 @@ import ( "github.com/vapor/testutil" ) -func TestSerializationTxOutput(t *testing.T) { +func TestSerializationIntraChainTxOutput(t *testing.T) { assetID := testutil.MustDecodeAsset("81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47") txOutput := NewIntraChainOutput(assetID, 254354, []byte("TestSerializationTxOutput")) wantHex := strings.Join([]string{ @@ -56,6 +56,49 @@ func TestSerializationTxOutput(t *testing.T) { } } +func TestSerializationCrossChainTxOutput(t *testing.T) { + assetID := testutil.MustDecodeAsset("81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47") + txOutput := NewCrossChainOutput(assetID, 254354, []byte("TestSerializationTxOutput")) + wantHex := strings.Join([]string{ + "01", // asset version + "40", // serialization length + "01", // outType + "3e", // output commitment length + "81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47", // assetID + "92c30f", // amount + "01", // version + "19", // control program length + "5465737453657269616c697a6174696f6e54784f7574707574", // control program + "00", // witness length + }, "") + + // Test convert struct to hex + var buffer bytes.Buffer + if err := txOutput.writeTo(&buffer); err != nil { + t.Fatal(err) + } + + gotHex := hex.EncodeToString(buffer.Bytes()) + if gotHex != wantHex { + t.Errorf("serialization bytes = %s want %s", gotHex, wantHex) + } + + // Test convert hex to struct + var gotTxOutput TxOutput + decodeHex, err := hex.DecodeString(wantHex) + if err != nil { + t.Fatal(err) + } + + if err := gotTxOutput.readFrom(blockchain.NewReader(decodeHex)); err != nil { + t.Fatal(err) + } + + if !testutil.DeepEqual(*txOutput, gotTxOutput) { + t.Errorf("expected marshaled/unmarshaled txoutput to be:\n%sgot:\n%s", spew.Sdump(*txOutput), spew.Sdump(gotTxOutput)) + } +} + func TestSerializationVoteTxOutput(t *testing.T) { assetID := testutil.MustDecodeAsset("81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47") voteTxOutput := NewVoteOutput(assetID, 1000, []byte("TestSerializationTxOutput"), []byte("af594006a40837d9f028daabb6d589df0b9138daefad5683e5233c2646279217294a8d532e60863bcf196625a35fb8ceeffa3c09610eb92dcfb655a947f13269"))