// Copyright (c) 2014 The btcsuite developers // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. package btcjson_test import ( "encoding/json" "testing" "github.com/btcsuite/btcd/btcjson" ) // TestChainSvrCustomResults ensures any results that have custom marshalling // work as inteded. // and unmarshal code of results are as expected. func TestChainSvrCustomResults(t *testing.T) { t.Parallel() tests := []struct { name string result interface{} expected string }{ { name: "custom vin marshal with coinbase", result: &btcjson.Vin{ Coinbase: "021234", Sequence: 4294967295, }, expected: `{"coinbase":"021234","sequence":4294967295}`, }, { name: "custom vin marshal without coinbase", result: &btcjson.Vin{ Txid: "123", Vout: 1, ScriptSig: &btcjson.ScriptSig{ Asm: "0", Hex: "00", }, Sequence: 4294967295, }, expected: `{"txid":"123","vout":1,"scriptSig":{"asm":"0","hex":"00"},"sequence":4294967295}`, }, { name: "custom vinprevout marshal with coinbase", result: &btcjson.VinPrevOut{ Coinbase: "021234", Sequence: 4294967295, }, expected: `{"coinbase":"021234","sequence":4294967295}`, }, { name: "custom vinprevout marshal without coinbase", result: &btcjson.VinPrevOut{ Txid: "123", Vout: 1, ScriptSig: &btcjson.ScriptSig{ Asm: "0", Hex: "00", }, PrevOut: &btcjson.PrevOut{ Addresses: []string{"addr1"}, Value: 0, }, Sequence: 4294967295, }, expected: `{"txid":"123","vout":1,"scriptSig":{"asm":"0","hex":"00"},"prevOut":{"addresses":["addr1"],"value":0},"sequence":4294967295}`, }, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { marshalled, err := json.Marshal(test.result) if err != nil { t.Errorf("Test #%d (%s) unexpected error: %v", i, test.name, err) continue } if string(marshalled) != test.expected { t.Errorf("Test #%d (%s) unexpected marhsalled data - "+ "got %s, want %s", i, test.name, marshalled, test.expected) continue } } }