Implemented rpc server method GetRawTransaction (#135)
* Added utility function GetVarSize * 1) Added Size method: this implied that Fixed8 implements now the serializable interface. 2) Added few arithmetic operation (Add, Sub, div): this will be used to calculated networkfeeand feePerByte. Changed return value of the Value() method to int instead of int64. Modified fixed8_test accordingly. * Implemented Size or MarshalJSON method. - Structs accepting the Size method implement the serializable interface. - Structs accepting the MarshalJSON method implements the customized json marshaller interface. * Added fee calculation * Implemented rcp server method GetRawTransaction * Updated Tests * Fixed: 1) NewFixed8 will accept as input int64 2) race condition affecting configDeafault, blockchainDefault * Simplified Size calculation * 1) Removed global variable blockchainDefault, configDefault 2) Extended Blockchainer interface to include the methods: References, FeePerByte, SystemFee, NetworkFee 3) Deleted fee_test.go, fee.go. Moved corresponding methods to blockchain_test.go and blockchain.go respectively 4) Amended tx_raw_output.go * Simplified GetVarSize Method * Replaced ValueAtAndType with ValueWithType * Cosmetic changes + Added test case getrawtransaction_7 * Clean up Print statement * Filled up keys * Aligned verbose logic with the C#-neo implementation * Implemented @Kim requests Refactor server_test.go * Small fixes * Fixed verbose logic Added more tests Cosmetic changes * Replaced assert.NoError with require.NoError * Fixed tests by adding context.Background() as argument * Fixed tests
This commit is contained in:
parent
20bb05b335
commit
19201dcf52
23 changed files with 859 additions and 151 deletions
139
pkg/util/size_test.go
Normal file
139
pkg/util/size_test.go
Normal file
|
@ -0,0 +1,139 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestVarSize(t *testing.T) {
|
||||
testCases := []struct {
|
||||
variable interface{}
|
||||
name string
|
||||
expected int
|
||||
}{
|
||||
{
|
||||
252,
|
||||
"test_int_1",
|
||||
1,
|
||||
},
|
||||
{
|
||||
253,
|
||||
"test_int_2",
|
||||
3,
|
||||
},
|
||||
{
|
||||
65535,
|
||||
"test_int_3",
|
||||
3,
|
||||
},
|
||||
{
|
||||
65536,
|
||||
"test_int_4",
|
||||
5,
|
||||
},
|
||||
{
|
||||
4294967295,
|
||||
"test_int_5",
|
||||
5,
|
||||
},
|
||||
{
|
||||
[]byte{1, 2, 4, 5, 6},
|
||||
"test_[]byte_1",
|
||||
6,
|
||||
},
|
||||
{
|
||||
// The neo C# implementation doe not allowed this!
|
||||
Uint160{1, 2, 4, 5, 6},
|
||||
"test_Uint160_1",
|
||||
21,
|
||||
},
|
||||
|
||||
{[20]uint8{1, 2, 3, 4, 5, 6},
|
||||
"test_uint8_1",
|
||||
21,
|
||||
},
|
||||
{[20]uint8{1, 2, 3, 4, 5, 6, 8, 9},
|
||||
"test_uint8_2",
|
||||
21,
|
||||
},
|
||||
|
||||
{[32]uint8{1, 2, 3, 4, 5, 6},
|
||||
"test_uint8_3",
|
||||
33,
|
||||
},
|
||||
{[10]uint16{1, 2, 3, 4, 5, 6},
|
||||
"test_uint16_1",
|
||||
21,
|
||||
},
|
||||
|
||||
{[10]uint16{1, 2, 3, 4, 5, 6, 10, 21},
|
||||
"test_uint16_2",
|
||||
21,
|
||||
},
|
||||
{[30]uint32{1, 2, 3, 4, 5, 6, 10, 21},
|
||||
"test_uint32_2",
|
||||
121,
|
||||
},
|
||||
{[30]uint64{1, 2, 3, 4, 5, 6, 10, 21},
|
||||
"test_uint64_2",
|
||||
241,
|
||||
},
|
||||
{[20]int8{1, 2, 3, 4, 5, 6},
|
||||
"test_int8_1",
|
||||
21,
|
||||
},
|
||||
{[20]int8{-1, 2, 3, 4, 5, 6, 8, 9},
|
||||
"test_int8_2",
|
||||
21,
|
||||
},
|
||||
|
||||
{[32]int8{-1, 2, 3, 4, 5, 6},
|
||||
"test_int8_3",
|
||||
33,
|
||||
},
|
||||
{[10]int16{-1, 2, 3, 4, 5, 6},
|
||||
"test_int16_1",
|
||||
21,
|
||||
},
|
||||
|
||||
{[10]int16{-1, 2, 3, 4, 5, 6, 10, 21},
|
||||
"test_int16_2",
|
||||
21,
|
||||
},
|
||||
{[30]int32{-1, 2, 3, 4, 5, 6, 10, 21},
|
||||
"test_int32_2",
|
||||
121,
|
||||
},
|
||||
{[30]int64{-1, 2, 3, 4, 5, 6, 10, 21},
|
||||
"test_int64_2",
|
||||
241,
|
||||
},
|
||||
// The neo C# implementation doe not allowed this!
|
||||
{Uint256{1, 2, 3, 4, 5, 6},
|
||||
"test_Uint256_1",
|
||||
33,
|
||||
},
|
||||
|
||||
{"abc",
|
||||
"test_string_1",
|
||||
4,
|
||||
},
|
||||
{"abcà",
|
||||
"test_string_2",
|
||||
6,
|
||||
},
|
||||
{"2d3b96ae1bcc5a585e075e3b81920210dec16302",
|
||||
"test_string_3",
|
||||
41,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(fmt.Sprintf("run: %s", tc.name), func(t *testing.T) {
|
||||
result := GetVarSize(tc.variable)
|
||||
assert.Equal(t, tc.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue