github.com/neatio-net/neatio@v1.7.3-0.20231114194659-f4d7a2226baa/chain/accounts/abi/bind/bind_test.go (about) 1 package bind 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "os/exec" 8 "path/filepath" 9 "runtime" 10 "strings" 11 "testing" 12 13 "github.com/neatio-net/neatio/utilities/common" 14 ) 15 16 var bindTests = []struct { 17 name string 18 contract string 19 bytecode []string 20 abi []string 21 imports string 22 tester string 23 fsigs []map[string]string 24 libs map[string]string 25 aliases map[string]string 26 types []string 27 }{ 28 { 29 `Empty`, 30 `contract NilContract {}`, 31 []string{`606060405260068060106000396000f3606060405200`}, 32 []string{`[]`}, 33 `"github.com/neatio-net/neatio/utilities/common"`, 34 ` 35 if b, err := NewEmpty(common.Address{}, nil); b == nil || err != nil { 36 t.Fatalf("combined binding (%v) nil or error (%v) not nil", b, nil) 37 } 38 if b, err := NewEmptyCaller(common.Address{}, nil); b == nil || err != nil { 39 t.Fatalf("caller binding (%v) nil or error (%v) not nil", b, nil) 40 } 41 if b, err := NewEmptyTransactor(common.Address{}, nil); b == nil || err != nil { 42 t.Fatalf("transactor binding (%v) nil or error (%v) not nil", b, nil) 43 } 44 `, 45 nil, 46 nil, 47 nil, 48 nil, 49 }, 50 { 51 `Token`, 52 `https://neatio.net/token`, 53 []string{`60606040526040516107fd3803806107fd83398101604052805160805160a05160c051929391820192909101600160a060020a0333166000908152600360209081526040822086905581548551838052601f6002600019610100600186161502019093169290920482018390047f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390810193919290918801908390106100e857805160ff19168380011785555b506101189291505b8082111561017157600081556001016100b4565b50506002805460ff19168317905550505050610658806101a56000396000f35b828001600101855582156100ac579182015b828111156100ac5782518260005055916020019190600101906100fa565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061017557805160ff19168380011785555b506100c89291506100b4565b5090565b82800160010185558215610165579182015b8281111561016557825182600050559160200191906001019061018756606060405236156100775760e060020a600035046306fdde03811461007f57806323b872dd146100dc578063313ce5671461010e57806370a082311461011a57806395d89b4114610132578063a9059cbb1461018e578063cae9ca51146101bd578063dc3080f21461031c578063dd62ed3e14610341575b610365610002565b61036760008054602060026001831615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104eb5780601f106104c0576101008083540402835291602001916104eb565b6103d5600435602435604435600160a060020a038316600090815260036020526040812054829010156104f357610002565b6103e760025460ff1681565b6103d560043560036020526000908152604090205481565b610367600180546020600282841615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104eb5780601f106104c0576101008083540402835291602001916104eb565b610365600435602435600160a060020a033316600090815260036020526040902054819010156103f157610002565b60806020604435600481810135601f8101849004909302840160405260608381526103d5948235946024803595606494939101919081908382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156102f25780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546103d59081565b60046020818152903560009081526040808220909252602435815220546103d59081565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6060908152602090f35b600160a060020a03821660009081526040902054808201101561041357610002565b806003600050600033600160a060020a03168152602001908152602001600020600082828250540392505081905550806003600050600084600160a060020a0316815260200190815260200160002060008282825054019250508190555081600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b820191906000526020600020905b8154815290600101906020018083116104ce57829003601f168201915b505050505081565b600160a060020a03831681526040812054808301101561051257610002565b600160a060020a0380851680835260046020908152604080852033949094168086529382528085205492855260058252808520938552929052908220548301111561055c57610002565b816003600050600086600160a060020a03168152602001908152602001600020600082828250540392505081905550816003600050600085600160a060020a03168152602001908152602001600020600082828250540192505081905550816005600050600086600160a060020a03168152602001908152602001600020600050600033600160a060020a0316815260200190815260200160002060008282825054019250508190555082600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3939250505056`}, 54 []string{`[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"spentAllowance","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"},{"name":"tokenName","type":"string"},{"name":"decimalUnits","type":"uint8"},{"name":"tokenSymbol","type":"string"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]`}, 55 `"github.com/neatio-net/neatio/utilities/common"`, 56 ` 57 if b, err := NewToken(common.Address{}, nil); b == nil || err != nil { 58 t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil) 59 } 60 `, 61 nil, 62 nil, 63 nil, 64 nil, 65 }, 66 { 67 `Crowdsale`, 68 `https://neatio.net/crowdsale`, 69 []string{`606060408190526007805460ff1916905560a0806105a883396101006040529051608051915160c05160e05160008054600160a060020a03199081169095178155670de0b6b3a7640000958602600155603c9093024201600355930260045560058054909216909217905561052f90819061007990396000f36060604052361561006c5760e060020a600035046301cb3b20811461008257806329dcb0cf1461014457806338af3eed1461014d5780636e66f6e91461015f5780637a3a0e84146101715780637b3e5e7b1461017a578063a035b1fe14610183578063dc0d3dff1461018c575b61020060075460009060ff161561032357610002565b61020060035460009042106103205760025460015490106103cb576002548154600160a060020a0316908290606082818181858883f150915460025460408051600160a060020a039390931683526020830191909152818101869052517fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6945090819003909201919050a15b60405160008054600160a060020a039081169230909116319082818181858883f150506007805460ff1916600117905550505050565b6103a160035481565b6103ab600054600160a060020a031681565b6103ab600554600160a060020a031681565b6103a160015481565b6103a160025481565b6103a160045481565b6103be60043560068054829081101561000257506000526002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8101547ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d409190910154600160a060020a03919091169082565b005b505050815481101561000257906000526020600020906002020160005060008201518160000160006101000a815481600160a060020a030219169083021790555060208201518160010160005055905050806002600082828250540192505081905550600560009054906101000a9004600160a060020a0316600160a060020a031663a9059cbb3360046000505484046040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506000604051808303816000876161da5a03f11561000257505060408051600160a060020a03331681526020810184905260018183015290517fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf692509081900360600190a15b50565b5060a0604052336060908152346080819052600680546001810180835592939282908280158290116102025760020281600202836000526020600020918201910161020291905b8082111561039d57805473ffffffffffffffffffffffffffffffffffffffff19168155600060019190910190815561036a565b5090565b6060908152602090f35b600160a060020a03166060908152602090f35b6060918252608052604090f35b5b60065481101561010e576006805482908110156100025760009182526002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190600680549254600160a060020a0316928490811015610002576002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40015460405190915082818181858883f19350505050507fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf660066000508281548110156100025760008290526002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01548154600160a060020a039190911691908490811015610002576002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40015460408051600160a060020a0394909416845260208401919091526000838201525191829003606001919050a16001016103cc56`}, 70 []string{`[{"constant":false,"inputs":[],"name":"checkGoalReached","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"deadline","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"tokenReward","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"fundingGoal","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"amountRaised","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"funders","outputs":[{"name":"addr","type":"address"},{"name":"amount","type":"uint256"}],"type":"function"},{"inputs":[{"name":"ifSuccessfulSendTo","type":"address"},{"name":"fundingGoalInEthers","type":"uint256"},{"name":"durationInMinutes","type":"uint256"},{"name":"etherCostOfEachToken","type":"uint256"},{"name":"addressOfTokenUsedAsReward","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"backer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"isContribution","type":"bool"}],"name":"FundTransfer","type":"event"}]`}, 71 `"github.com/neatio-net/neatio/utilities/common"`, 72 ` 73 if b, err := NewCrowdsale(common.Address{}, nil); b == nil || err != nil { 74 t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil) 75 } 76 `, 77 nil, 78 nil, 79 nil, 80 nil, 81 }, 82 { 83 `DAO`, 84 `https://neatio.net/dao`, 85 []string{`606060405260405160808061145f833960e06040529051905160a05160c05160008054600160a060020a03191633179055600184815560028490556003839055600780549182018082558280158290116100b8576003028160030283600052602060002091820191016100b891906101c8565b50506060919091015160029190910155600160a060020a0381166000146100a65760008054600160a060020a031916821790555b505050506111f18061026e6000396000f35b505060408051608081018252600080825260208281018290528351908101845281815292820192909252426060820152600780549194509250811015610002579081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889050815181546020848101517401000000000000000000000000000000000000000002600160a060020a03199290921690921760a060020a60ff021916178255604083015180516001848101805460008281528690209195600293821615610100026000190190911692909204601f9081018390048201949192919091019083901061023e57805160ff19168380011785555b50610072929150610226565b5050600060028201556001015b8082111561023a578054600160a860020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061020c57506101bb565b601f0160209004906000526020600020908101906101bb91905b8082111561023a5760008155600101610226565b5090565b828001600101855582156101af579182015b828111156101af57825182600050559160200191906001019061025056606060405236156100b95760e060020a6000350463013cf08b81146100bb578063237e9492146101285780633910682114610281578063400e3949146102995780635daf08ca146102a257806369bd34361461032f5780638160f0b5146103385780638da5cb5b146103415780639644fcbd14610353578063aa02a90f146103be578063b1050da5146103c7578063bcca1fd3146104b5578063d3c0715b146104dc578063eceb29451461058d578063f2fde38b1461067b575b005b61069c6004356004805482908110156100025790600052602060002090600a02016000506005810154815460018301546003840154600485015460068601546007870154600160a060020a03959095169750929560020194919360ff828116946101009093041692919089565b60408051602060248035600481810135601f81018590048502860185019096528585526107759581359591946044949293909201918190840183828082843750949650505050505050600060006004600050848154811015610002575090527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e600a8402908101547f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101904210806101e65750600481015460ff165b8061026757508060000160009054906101000a9004600160a060020a03168160010160005054846040518084600160a060020a0316606060020a0281526014018381526020018280519060200190808383829060006004602084601f0104600f02600301f15090500193505050506040518091039020816007016000505414155b8061027757506001546005820154105b1561109257610002565b61077560043560066020526000908152604090205481565b61077560055481565b61078760043560078054829081101561000257506000526003026000805160206111d18339815191528101547fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a820154600160a060020a0382169260a060020a90920460ff16917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689019084565b61077560025481565b61077560015481565b610830600054600160a060020a031681565b604080516020604435600481810135601f81018490048402850184019095528484526100b9948135946024803595939460649492939101918190840183828082843750949650505050505050600080548190600160a060020a03908116339091161461084d57610002565b61077560035481565b604080516020604435600481810135601f8101849004840285018401909552848452610775948135946024803595939460649492939101918190840183828082843750506040805160209735808a0135601f81018a90048a0283018a019093528282529698976084979196506024909101945090925082915084018382808284375094965050505050505033600160a060020a031660009081526006602052604081205481908114806104ab5750604081205460078054909190811015610002579082526003026000805160206111d1833981519152015460a060020a900460ff16155b15610ce557610002565b6100b960043560243560443560005433600160a060020a03908116911614610b1857610002565b604080516020604435600481810135601f810184900484028501840190955284845261077594813594602480359593946064949293910191819084018382808284375094965050505050505033600160a060020a031660009081526006602052604081205481908114806105835750604081205460078054909190811015610002579082526003026000805160206111d18339815191520181505460a060020a900460ff16155b15610f1d57610002565b604080516020606435600481810135601f81018490048402850184019095528484526107759481359460248035956044359560849492019190819084018382808284375094965050505050505060006000600460005086815481101561000257908252600a027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01815090508484846040518084600160a060020a0316606060020a0281526014018381526020018280519060200190808383829060006004602084601f0104600f02600301f150905001935050505060405180910390208160070160005054149150610cdc565b6100b960043560005433600160a060020a03908116911614610f0857610002565b604051808a600160a060020a031681526020018981526020018060200188815260200187815260200186815260200185815260200184815260200183815260200182810382528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561075e5780601f106107335761010080835404028352916020019161075e565b820191906000526020600020905b81548152906001019060200180831161074157829003601f168201915b50509a505050505050505050505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a038616815260208101859052606081018390526080918101828152845460026001821615610100026000190190911604928201839052909160a08301908590801561081e5780601f106107f35761010080835404028352916020019161081e565b820191906000526020600020905b81548152906001019060200180831161080157829003601f168201915b50509550505050505060405180910390f35b60408051600160a060020a03929092168252519081900360200190f35b600160a060020a03851660009081526006602052604081205414156108a957604060002060078054918290556001820180825582801582901161095c5760030281600302836000526020600020918201910161095c9190610a4f565b600160a060020a03851660009081526006602052604090205460078054919350908390811015610002575060005250600381026000805160206111d183398151915201805474ff0000000000000000000000000000000000000000191660a060020a85021781555b60408051600160a060020a03871681526020810186905281517f27b022af4a8347100c7a041ce5ccf8e14d644ff05de696315196faae8cd50c9b929181900390910190a15050505050565b505050915081506080604051908101604052808681526020018581526020018481526020014281526020015060076000508381548110156100025790600052602060002090600302016000508151815460208481015160a060020a02600160a060020a03199290921690921774ff00000000000000000000000000000000000000001916178255604083015180516001848101805460008281528690209195600293821615610100026000190190911692909204601f90810183900482019491929190910190839010610ad357805160ff19168380011785555b50610b03929150610abb565b5050600060028201556001015b80821115610acf57805474ffffffffffffffffffffffffffffffffffffffffff1916815560018181018054600080835592600290821615610100026000190190911604601f819010610aa15750610a42565b601f016020900490600052602060002090810190610a4291905b80821115610acf5760008155600101610abb565b5090565b82800160010185558215610a36579182015b82811115610a36578251826000505591602001919060010190610ae5565b50506060919091015160029190910155610911565b600183905560028290556003819055604080518481526020810184905280820183905290517fa439d3fa452be5e0e1e24a8145e715f4fd8b9c08c96a42fd82a855a85e5d57de9181900360600190a1505050565b50508585846040518084600160a060020a0316606060020a0281526014018381526020018280519060200190808383829060006004602084601f0104600f02600301f150905001935050505060405180910390208160070160005081905550600260005054603c024201816003016000508190555060008160040160006101000a81548160ff0219169083021790555060008160040160016101000a81548160ff02191690830217905550600081600501600050819055507f646fec02522b41e7125cfc859a64fd4f4cefd5dc3b6237ca0abe251ded1fa881828787876040518085815260200184600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f168015610cc45780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1600182016005555b50949350505050565b6004805460018101808355909190828015829011610d1c57600a0281600a028360005260206000209182019101610d1c9190610db8565b505060048054929450918491508110156100025790600052602060002090600a02016000508054600160a060020a031916871781556001818101879055855160028381018054600082815260209081902096975091959481161561010002600019011691909104601f90810182900484019391890190839010610ed857805160ff19168380011785555b50610b6c929150610abb565b50506001015b80821115610acf578054600160a060020a03191681556000600182810182905560028381018054848255909281161561010002600019011604601f819010610e9c57505b5060006003830181905560048301805461ffff191690556005830181905560068301819055600783018190556008830180548282559082526020909120610db2916002028101905b80821115610acf57805474ffffffffffffffffffffffffffffffffffffffffff1916815560018181018054600080835592600290821615610100026000190190911604601f819010610eba57505b5050600101610e44565b601f016020900490600052602060002090810190610dfc9190610abb565b601f016020900490600052602060002090810190610e929190610abb565b82800160010185558215610da6579182015b82811115610da6578251826000505591602001919060010190610eea565b60008054600160a060020a0319168217905550565b600480548690811015610002576000918252600a027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905033600160a060020a0316600090815260098201602052604090205490915060ff1660011415610f8457610002565b33600160a060020a031660009081526009820160205260409020805460ff1916600190811790915560058201805490910190558315610fcd576006810180546001019055610fda565b6006810180546000190190555b7fc34f869b7ff431b034b7b9aea9822dac189a685e0b015c7d1be3add3f89128e8858533866040518085815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1509392505050565b6006810154600354901315611158578060000160009054906101000a9004600160a060020a0316600160a060020a03168160010160005054670de0b6b3a76400000284604051808280519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156111225780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f15050505060048101805460ff191660011761ff00191661010017905561116d565b60048101805460ff191660011761ff00191690555b60068101546005820154600483015460408051888152602081019490945283810192909252610100900460ff166060830152517fd220b7272a8b6d0d7d6bcdace67b936a8f175e6d5c1b3ee438b72256b32ab3af9181900360800190a1509291505056a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688`}, 86 []string{`[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"proposals","outputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"description","type":"string"},{"name":"votingDeadline","type":"uint256"},{"name":"executed","type":"bool"},{"name":"proposalPassed","type":"bool"},{"name":"numberOfVotes","type":"uint256"},{"name":"currentResult","type":"int256"},{"name":"proposalHash","type":"bytes32"}],"type":"function"},{"constant":false,"inputs":[{"name":"proposalNumber","type":"uint256"},{"name":"transactionBytecode","type":"bytes"}],"name":"executeProposal","outputs":[{"name":"result","type":"int256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"memberId","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"numProposals","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"members","outputs":[{"name":"member","type":"address"},{"name":"canVote","type":"bool"},{"name":"name","type":"string"},{"name":"memberSince","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"debatingPeriodInMinutes","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"minimumQuorum","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"targetMember","type":"address"},{"name":"canVote","type":"bool"},{"name":"memberName","type":"string"}],"name":"changeMembership","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"majorityMargin","outputs":[{"name":"","type":"int256"}],"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"etherAmount","type":"uint256"},{"name":"JobDescription","type":"string"},{"name":"transactionBytecode","type":"bytes"}],"name":"newProposal","outputs":[{"name":"proposalID","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"minimumQuorumForProposals","type":"uint256"},{"name":"minutesForDebate","type":"uint256"},{"name":"marginOfVotesForMajority","type":"int256"}],"name":"changeVotingRules","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"proposalNumber","type":"uint256"},{"name":"supportsProposal","type":"bool"},{"name":"justificationText","type":"string"}],"name":"vote","outputs":[{"name":"voteID","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"proposalNumber","type":"uint256"},{"name":"beneficiary","type":"address"},{"name":"etherAmount","type":"uint256"},{"name":"transactionBytecode","type":"bytes"}],"name":"checkProposalCode","outputs":[{"name":"codeChecksOut","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"type":"function"},{"inputs":[{"name":"minimumQuorumForProposals","type":"uint256"},{"name":"minutesForDebate","type":"uint256"},{"name":"marginOfVotesForMajority","type":"int256"},{"name":"congressLeader","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"proposalID","type":"uint256"},{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"description","type":"string"}],"name":"ProposalAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"proposalID","type":"uint256"},{"indexed":false,"name":"position","type":"bool"},{"indexed":false,"name":"voter","type":"address"},{"indexed":false,"name":"justification","type":"string"}],"name":"Voted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"proposalID","type":"uint256"},{"indexed":false,"name":"result","type":"int256"},{"indexed":false,"name":"quorum","type":"uint256"},{"indexed":false,"name":"active","type":"bool"}],"name":"ProposalTallied","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"member","type":"address"},{"indexed":false,"name":"isMember","type":"bool"}],"name":"MembershipChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minimumQuorum","type":"uint256"},{"indexed":false,"name":"debatingPeriodInMinutes","type":"uint256"},{"indexed":false,"name":"majorityMargin","type":"int256"}],"name":"ChangeOfRules","type":"event"}]`}, 87 `"github.com/neatio-net/neatio/utilities/common"`, 88 ` 89 if b, err := NewDAO(common.Address{}, nil); b == nil || err != nil { 90 t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil) 91 } 92 `, 93 nil, 94 nil, 95 nil, 96 nil, 97 }, 98 { 99 `InputChecker`, ``, []string{``}, 100 []string{` 101 [ 102 {"type":"function","name":"noInput","constant":true,"inputs":[],"outputs":[]}, 103 {"type":"function","name":"namedInput","constant":true,"inputs":[{"name":"str","type":"string"}],"outputs":[]}, 104 {"type":"function","name":"anonInput","constant":true,"inputs":[{"name":"","type":"string"}],"outputs":[]}, 105 {"type":"function","name":"namedInputs","constant":true,"inputs":[{"name":"str1","type":"string"},{"name":"str2","type":"string"}],"outputs":[]}, 106 {"type":"function","name":"anonInputs","constant":true,"inputs":[{"name":"","type":"string"},{"name":"","type":"string"}],"outputs":[]}, 107 {"type":"function","name":"mixedInputs","constant":true,"inputs":[{"name":"","type":"string"},{"name":"str","type":"string"}],"outputs":[]} 108 ] 109 `}, 110 ` 111 "fmt" 112 113 "github.com/neatio-net/neatio/utilities/common" 114 `, 115 `if b, err := NewInputChecker(common.Address{}, nil); b == nil || err != nil { 116 t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil) 117 } else if false { // Don't run, just compile and test types 118 var err error 119 120 err = b.NoInput(nil) 121 err = b.NamedInput(nil, "") 122 err = b.AnonInput(nil, "") 123 err = b.NamedInputs(nil, "", "") 124 err = b.AnonInputs(nil, "", "") 125 err = b.MixedInputs(nil, "", "") 126 127 fmt.Println(err) 128 }`, 129 nil, 130 nil, 131 nil, 132 nil, 133 }, 134 { 135 `OutputChecker`, ``, []string{``}, 136 []string{` 137 [ 138 {"type":"function","name":"noOutput","constant":true,"inputs":[],"outputs":[]}, 139 {"type":"function","name":"namedOutput","constant":true,"inputs":[],"outputs":[{"name":"str","type":"string"}]}, 140 {"type":"function","name":"anonOutput","constant":true,"inputs":[],"outputs":[{"name":"","type":"string"}]}, 141 {"type":"function","name":"namedOutputs","constant":true,"inputs":[],"outputs":[{"name":"str1","type":"string"},{"name":"str2","type":"string"}]}, 142 {"type":"function","name":"collidingOutputs","constant":true,"inputs":[],"outputs":[{"name":"str","type":"string"},{"name":"Str","type":"string"}]}, 143 {"type":"function","name":"anonOutputs","constant":true,"inputs":[],"outputs":[{"name":"","type":"string"},{"name":"","type":"string"}]}, 144 {"type":"function","name":"mixedOutputs","constant":true,"inputs":[],"outputs":[{"name":"","type":"string"},{"name":"str","type":"string"}]} 145 ] 146 `}, 147 ` 148 "fmt" 149 150 "github.com/neatio-net/neatio/utilities/common" 151 `, 152 `if b, err := NewOutputChecker(common.Address{}, nil); b == nil || err != nil { 153 t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil) 154 } else if false { // Don't run, just compile and test types 155 var str1, str2 string 156 var err error 157 158 err = b.NoOutput(nil) 159 str1, err = b.NamedOutput(nil) 160 str1, err = b.AnonOutput(nil) 161 res, _ := b.NamedOutputs(nil) 162 str1, str2, err = b.CollidingOutputs(nil) 163 str1, str2, err = b.AnonOutputs(nil) 164 str1, str2, err = b.MixedOutputs(nil) 165 166 fmt.Println(str1, str2, res.Str1, res.Str2, err) 167 }`, 168 nil, 169 nil, 170 nil, 171 nil, 172 }, 173 { 174 `EventChecker`, ``, []string{``}, 175 []string{` 176 [ 177 {"type":"event","name":"empty","inputs":[]}, 178 {"type":"event","name":"indexed","inputs":[{"name":"addr","type":"address","indexed":true},{"name":"num","type":"int256","indexed":true}]}, 179 {"type":"event","name":"mixed","inputs":[{"name":"addr","type":"address","indexed":true},{"name":"num","type":"int256"}]}, 180 {"type":"event","name":"anonymous","anonymous":true,"inputs":[]}, 181 {"type":"event","name":"dynamic","inputs":[{"name":"idxStr","type":"string","indexed":true},{"name":"idxDat","type":"bytes","indexed":true},{"name":"str","type":"string"},{"name":"dat","type":"bytes"}]} 182 ] 183 `}, 184 ` 185 "fmt" 186 "math/big" 187 "reflect" 188 189 "github.com/neatio-net/neatio/utilities/common" 190 `, 191 `if e, err := NewEventChecker(common.Address{}, nil); e == nil || err != nil { 192 t.Fatalf("binding (%v) nil or error (%v) not nil", e, nil) 193 } else if false { // Don't run, just compile and test types 194 var ( 195 err error 196 res bool 197 str string 198 dat []byte 199 hash common.Hash 200 ) 201 _, err = e.FilterEmpty(nil) 202 _, err = e.FilterIndexed(nil, []common.Address{}, []*big.Int{}) 203 204 mit, err := e.FilterMixed(nil, []common.Address{}) 205 206 res = mit.Next() // Make sure the iterator has a Next method 207 err = mit.Error() // Make sure the iterator has an Error method 208 err = mit.Close() // Make sure the iterator has a Close method 209 210 fmt.Println(mit.Event.Raw.BlockHash) // Make sure the raw log is contained within the results 211 fmt.Println(mit.Event.Num) // Make sure the unpacked non-indexed fields are present 212 fmt.Println(mit.Event.Addr) // Make sure the reconstructed indexed fields are present 213 214 dit, err := e.FilterDynamic(nil, []string{}, [][]byte{}) 215 216 str = dit.Event.Str // Make sure non-indexed strings retain their type 217 dat = dit.Event.Dat // Make sure non-indexed bytes retain their type 218 hash = dit.Event.IdxStr // Make sure indexed strings turn into hashes 219 hash = dit.Event.IdxDat // Make sure indexed bytes turn into hashes 220 221 sink := make(chan *EventCheckerMixed) 222 sub, err := e.WatchMixed(nil, sink, []common.Address{}) 223 defer sub.Unsubscribe() 224 225 event := <-sink 226 fmt.Println(event.Raw.BlockHash) // Make sure the raw log is contained within the results 227 fmt.Println(event.Num) // Make sure the unpacked non-indexed fields are present 228 fmt.Println(event.Addr) // Make sure the reconstructed indexed fields are present 229 230 fmt.Println(res, str, dat, hash, err) 231 } 232 // Run a tiny reflection test to ensure disallowed methods don't appear 233 if _, ok := reflect.TypeOf(&EventChecker{}).MethodByName("FilterAnonymous"); ok { 234 t.Errorf("binding has disallowed method (FilterAnonymous)") 235 }`, 236 nil, 237 nil, 238 nil, 239 nil, 240 }, 241 { 242 `Interactor`, 243 ` 244 contract Interactor { 245 string public deployString; 246 string public transactString; 247 248 function Interactor(string str) { 249 deployString = str; 250 } 251 252 function transact(string str) { 253 transactString = str; 254 } 255 } 256 `, 257 []string{`6060604052604051610328380380610328833981016040528051018060006000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10608d57805160ff19168380011785555b50607c9291505b8082111560ba57838155600101606b565b50505061026a806100be6000396000f35b828001600101855582156064579182015b828111156064578251826000505591602001919060010190609e565b509056606060405260e060020a60003504630d86a0e181146100315780636874e8091461008d578063d736c513146100ea575b005b610190600180546020600282841615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156102295780601f106101fe57610100808354040283529160200191610229565b61019060008054602060026001831615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156102295780601f106101fe57610100808354040283529160200191610229565b60206004803580820135601f81018490049093026080908101604052606084815261002f946024939192918401918190838280828437509496505050505050508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061023157805160ff19168380011785555b506102619291505b808211156102665760008155830161017d565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156101f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b820191906000526020600020905b81548152906001019060200180831161020c57829003601f168201915b505050505081565b82800160010185558215610175579182015b82811115610175578251826000505591602001919060010190610243565b505050565b509056`}, 258 []string{`[{"constant":true,"inputs":[],"name":"transactString","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":true,"inputs":[],"name":"deployString","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":false,"inputs":[{"name":"str","type":"string"}],"name":"transact","outputs":[],"type":"function"},{"inputs":[{"name":"str","type":"string"}],"type":"constructor"}]`}, 259 ` 260 "math/big" 261 262 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 263 "github.com/neatio-net/neatio/chain/core" 264 "github.com/neatio-net/neatio/utilities/crypto" 265 `, 266 ` 267 // Generate a new random account and a funded simulator 268 key, _ := crypto.GenerateKey() 269 auth := bind.NewKeyedTransactor(key) 270 271 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 272 defer sim.Close() 273 274 // Deploy an interaction tester contract and call a transaction on it 275 _, _, interactor, err := DeployInteractor(auth, sim, "Deploy string") 276 if err != nil { 277 t.Fatalf("Failed to deploy interactor contract: %v", err) 278 } 279 if _, err := interactor.Transact(auth, "Transact string"); err != nil { 280 t.Fatalf("Failed to transact with interactor contract: %v", err) 281 } 282 // Commit all pending transactions in the simulator and check the contract state 283 sim.Commit() 284 285 if str, err := interactor.DeployString(nil); err != nil { 286 t.Fatalf("Failed to retrieve deploy string: %v", err) 287 } else if str != "Deploy string" { 288 t.Fatalf("Deploy string mismatch: have '%s', want 'Deploy string'", str) 289 } 290 if str, err := interactor.TransactString(nil); err != nil { 291 t.Fatalf("Failed to retrieve transact string: %v", err) 292 } else if str != "Transact string" { 293 t.Fatalf("Transact string mismatch: have '%s', want 'Transact string'", str) 294 } 295 `, 296 nil, 297 nil, 298 nil, 299 nil, 300 }, 301 { 302 `Getter`, 303 ` 304 contract Getter { 305 function getter() constant returns (string, int, bytes32) { 306 return ("Hi", 1, sha3("")); 307 } 308 } 309 `, 310 []string{`606060405260dc8060106000396000f3606060405260e060020a6000350463993a04b78114601a575b005b600060605260c0604052600260809081527f486900000000000000000000000000000000000000000000000000000000000060a05260017fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060e0829052610100819052606060c0908152600261012081905281906101409060a09080838184600060046012f1505081517fffff000000000000000000000000000000000000000000000000000000000000169091525050604051610160819003945092505050f3`}, 311 []string{`[{"constant":true,"inputs":[],"name":"getter","outputs":[{"name":"","type":"string"},{"name":"","type":"int256"},{"name":"","type":"bytes32"}],"type":"function"}]`}, 312 ` 313 "math/big" 314 315 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 316 "github.com/neatio-net/neatio/chain/core" 317 "github.com/neatio-net/neatio/utilities/crypto" 318 `, 319 ` 320 // Generate a new random account and a funded simulator 321 key, _ := crypto.GenerateKey() 322 auth := bind.NewKeyedTransactor(key) 323 324 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 325 defer sim.Close() 326 327 // Deploy a tuple tester contract and execute a structured call on it 328 _, _, getter, err := DeployGetter(auth, sim) 329 if err != nil { 330 t.Fatalf("Failed to deploy getter contract: %v", err) 331 } 332 sim.Commit() 333 334 if str, num, _, err := getter.Getter(nil); err != nil { 335 t.Fatalf("Failed to call anonymous field retriever: %v", err) 336 } else if str != "Hi" || num.Cmp(big.NewInt(1)) != 0 { 337 t.Fatalf("Retrieved value mismatch: have %v/%v, want %v/%v", str, num, "Hi", 1) 338 } 339 `, 340 nil, 341 nil, 342 nil, 343 nil, 344 }, 345 { 346 `Tupler`, 347 ` 348 contract Tupler { 349 function tuple() constant returns (string a, int b, bytes32 c) { 350 return ("Hi", 1, sha3("")); 351 } 352 } 353 `, 354 []string{`606060405260dc8060106000396000f3606060405260e060020a60003504633175aae28114601a575b005b600060605260c0604052600260809081527f486900000000000000000000000000000000000000000000000000000000000060a05260017fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060e0829052610100819052606060c0908152600261012081905281906101409060a09080838184600060046012f1505081517fffff000000000000000000000000000000000000000000000000000000000000169091525050604051610160819003945092505050f3`}, 355 []string{`[{"constant":true,"inputs":[],"name":"tuple","outputs":[{"name":"a","type":"string"},{"name":"b","type":"int256"},{"name":"c","type":"bytes32"}],"type":"function"}]`}, 356 ` 357 "math/big" 358 359 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 360 "github.com/neatio-net/neatio/chain/core" 361 "github.com/neatio-net/neatio/utilities/crypto" 362 `, 363 ` 364 // Generate a new random account and a funded simulator 365 key, _ := crypto.GenerateKey() 366 auth := bind.NewKeyedTransactor(key) 367 368 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 369 defer sim.Close() 370 371 // Deploy a tuple tester contract and execute a structured call on it 372 _, _, tupler, err := DeployTupler(auth, sim) 373 if err != nil { 374 t.Fatalf("Failed to deploy tupler contract: %v", err) 375 } 376 sim.Commit() 377 378 if res, err := tupler.Tuple(nil); err != nil { 379 t.Fatalf("Failed to call structure retriever: %v", err) 380 } else if res.A != "Hi" || res.B.Cmp(big.NewInt(1)) != 0 { 381 t.Fatalf("Retrieved value mismatch: have %v/%v, want %v/%v", res.A, res.B, "Hi", 1) 382 } 383 `, 384 nil, 385 nil, 386 nil, 387 nil, 388 }, 389 { 390 `Slicer`, 391 ` 392 contract Slicer { 393 function echoAddresses(address[] input) constant returns (address[] output) { 394 return input; 395 } 396 function echoInts(int[] input) constant returns (int[] output) { 397 return input; 398 } 399 function echoFancyInts(uint24[23] input) constant returns (uint24[23] output) { 400 return input; 401 } 402 function echoBools(bool[] input) constant returns (bool[] output) { 403 return input; 404 } 405 } 406 `, 407 []string{`606060405261015c806100126000396000f3606060405260e060020a6000350463be1127a3811461003c578063d88becc014610092578063e15a3db71461003c578063f637e5891461003c575b005b604080516020600480358082013583810285810185019096528085526100ee959294602494909392850192829185019084908082843750949650505050505050604080516020810190915260009052805b919050565b604080516102e0818101909252610138916004916102e491839060179083908390808284375090955050505050506102e0604051908101604052806017905b60008152602001906001900390816100d15790505081905061008d565b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600f02600301f1509050019250505060405180910390f35b60405180826102e0808381846000600461015cf15090500191505060405180910390f3`}, 408 []string{`[{"constant":true,"inputs":[{"name":"input","type":"address[]"}],"name":"echoAddresses","outputs":[{"name":"output","type":"address[]"}],"type":"function"},{"constant":true,"inputs":[{"name":"input","type":"uint24[23]"}],"name":"echoFancyInts","outputs":[{"name":"output","type":"uint24[23]"}],"type":"function"},{"constant":true,"inputs":[{"name":"input","type":"int256[]"}],"name":"echoInts","outputs":[{"name":"output","type":"int256[]"}],"type":"function"},{"constant":true,"inputs":[{"name":"input","type":"bool[]"}],"name":"echoBools","outputs":[{"name":"output","type":"bool[]"}],"type":"function"}]`}, 409 ` 410 "math/big" 411 "reflect" 412 413 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 414 "github.com/neatio-net/neatio/utilities/common" 415 "github.com/neatio-net/neatio/chain/core" 416 "github.com/neatio-net/neatio/utilities/crypto" 417 `, 418 ` 419 // Generate a new random account and a funded simulator 420 key, _ := crypto.GenerateKey() 421 auth := bind.NewKeyedTransactor(key) 422 423 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 424 defer sim.Close() 425 426 // Deploy a slice tester contract and execute a n array call on it 427 _, _, slicer, err := DeploySlicer(auth, sim) 428 if err != nil { 429 t.Fatalf("Failed to deploy slicer contract: %v", err) 430 } 431 sim.Commit() 432 433 if out, err := slicer.EchoAddresses(nil, []common.Address{auth.From, common.Address{}}); err != nil { 434 t.Fatalf("Failed to call slice echoer: %v", err) 435 } else if !reflect.DeepEqual(out, []common.Address{auth.From, common.Address{}}) { 436 t.Fatalf("Slice return mismatch: have %v, want %v", out, []common.Address{auth.From, common.Address{}}) 437 } 438 `, 439 nil, 440 nil, 441 nil, 442 nil, 443 }, 444 { 445 `Defaulter`, 446 ` 447 contract Defaulter { 448 address public caller; 449 450 function() { 451 caller = msg.sender; 452 } 453 } 454 `, 455 []string{`6060604052606a8060106000396000f360606040523615601d5760e060020a6000350463fc9c8d3981146040575b605e6000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b606060005473ffffffffffffffffffffffffffffffffffffffff1681565b005b6060908152602090f3`}, 456 []string{`[{"constant":true,"inputs":[],"name":"caller","outputs":[{"name":"","type":"address"}],"type":"function"}]`}, 457 ` 458 "math/big" 459 460 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 461 "github.com/neatio-net/neatio/chain/core" 462 "github.com/neatio-net/neatio/utilities/crypto" 463 `, 464 ` 465 // Generate a new random account and a funded simulator 466 key, _ := crypto.GenerateKey() 467 auth := bind.NewKeyedTransactor(key) 468 469 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 470 defer sim.Close() 471 472 // Deploy a default method invoker contract and execute its default method 473 _, _, defaulter, err := DeployDefaulter(auth, sim) 474 if err != nil { 475 t.Fatalf("Failed to deploy defaulter contract: %v", err) 476 } 477 if _, err := (&DefaulterRaw{defaulter}).Transfer(auth); err != nil { 478 t.Fatalf("Failed to invoke default method: %v", err) 479 } 480 sim.Commit() 481 482 if caller, err := defaulter.Caller(nil); err != nil { 483 t.Fatalf("Failed to call address retriever: %v", err) 484 } else if (caller != auth.From) { 485 t.Fatalf("Address mismatch: have %v, want %v", caller, auth.From) 486 } 487 `, 488 nil, 489 nil, 490 nil, 491 nil, 492 }, 493 { 494 `NonExistent`, 495 ` 496 contract NonExistent { 497 function String() constant returns(string) { 498 return "I don't exist"; 499 } 500 } 501 `, 502 []string{`6060604052609f8060106000396000f3606060405260e060020a6000350463f97a60058114601a575b005b600060605260c0604052600d60809081527f4920646f6e27742065786973740000000000000000000000000000000000000060a052602060c0908152600d60e081905281906101009060a09080838184600060046012f15050815172ffffffffffffffffffffffffffffffffffffff1916909152505060405161012081900392509050f3`}, 503 []string{`[{"constant":true,"inputs":[],"name":"String","outputs":[{"name":"","type":"string"}],"type":"function"}]`}, 504 ` 505 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 506 "github.com/neatio-net/neatio/utilities/common" 507 "github.com/neatio-net/neatio/chain/core" 508 `, 509 ` 510 // Create a simulator and wrap a non-deployed contract 511 512 sim := backends.NewSimulatedBackend(core.GenesisAlloc{}, uint64(10000000000)) 513 defer sim.Close() 514 515 nonexistent, err := NewNonExistent(common.Address{}, sim) 516 if err != nil { 517 t.Fatalf("Failed to access non-existent contract: %v", err) 518 } 519 // Ensure that contract calls fail with the appropriate error 520 if res, err := nonexistent.String(nil); err == nil { 521 t.Fatalf("Call succeeded on non-existent contract: %v", res) 522 } else if (err != bind.ErrNoCode) { 523 t.Fatalf("Error mismatch: have %v, want %v", err, bind.ErrNoCode) 524 } 525 `, 526 nil, 527 nil, 528 nil, 529 nil, 530 }, 531 { 532 `FunkyGasPattern`, 533 ` 534 contract FunkyGasPattern { 535 string public field; 536 537 function SetField(string value) { 538 // This check will screw gas estimation! Good, good! 539 if (msg.gas < 100000) { 540 throw; 541 } 542 field = value; 543 } 544 } 545 `, 546 []string{`606060405261021c806100126000396000f3606060405260e060020a600035046323fcf32a81146100265780634f28bf0e1461007b575b005b6040805160206004803580820135601f8101849004840285018401909552848452610024949193602493909291840191908190840183828082843750949650505050505050620186a05a101561014e57610002565b6100db60008054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281529291908301828280156102145780601f106101e957610100808354040283529160200191610214565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561013b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b505050565b8060006000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101b557805160ff19168380011785555b506101499291505b808211156101e557600081556001016101a1565b82800160010185558215610199579182015b828111156101995782518260005055916020019190600101906101c7565b5090565b820191906000526020600020905b8154815290600101906020018083116101f757829003601f168201915b50505050508156`}, 547 []string{`[{"constant":false,"inputs":[{"name":"value","type":"string"}],"name":"SetField","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"field","outputs":[{"name":"","type":"string"}],"type":"function"}]`}, 548 ` 549 "math/big" 550 551 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 552 "github.com/neatio-net/neatio/chain/core" 553 "github.com/neatio-net/neatio/utilities/crypto" 554 `, 555 ` 556 // Generate a new random account and a funded simulator 557 key, _ := crypto.GenerateKey() 558 auth := bind.NewKeyedTransactor(key) 559 560 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 561 defer sim.Close() 562 563 // Deploy a funky gas pattern contract 564 _, _, limiter, err := DeployFunkyGasPattern(auth, sim) 565 if err != nil { 566 t.Fatalf("Failed to deploy funky contract: %v", err) 567 } 568 sim.Commit() 569 570 // Set the field with automatic estimation and check that it succeeds 571 if _, err := limiter.SetField(auth, "automatic"); err != nil { 572 t.Fatalf("Failed to call automatically gased transaction: %v", err) 573 } 574 sim.Commit() 575 576 if field, _ := limiter.Field(nil); field != "automatic" { 577 t.Fatalf("Field mismatch: have %v, want %v", field, "automatic") 578 } 579 `, 580 nil, 581 nil, 582 nil, 583 nil, 584 }, 585 { 586 `CallFrom`, 587 ` 588 contract CallFrom { 589 function callFrom() constant returns(address) { 590 return msg.sender; 591 } 592 } 593 `, []string{`6060604052346000575b6086806100176000396000f300606060405263ffffffff60e060020a60003504166349f8e98281146022575b6000565b34600057602c6055565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b335b905600a165627a7a72305820aef6b7685c0fa24ba6027e4870404a57df701473fe4107741805c19f5138417c0029`}, 594 []string{`[{"constant":true,"inputs":[],"name":"callFrom","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"}]`}, 595 ` 596 "math/big" 597 598 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 599 "github.com/neatio-net/neatio/utilities/common" 600 "github.com/neatio-net/neatio/chain/core" 601 "github.com/neatio-net/neatio/utilities/crypto" 602 `, 603 ` 604 // Generate a new random account and a funded simulator 605 key, _ := crypto.GenerateKey() 606 auth := bind.NewKeyedTransactor(key) 607 608 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 609 defer sim.Close() 610 611 // Deploy a sender tester contract and execute a structured call on it 612 _, _, callfrom, err := DeployCallFrom(auth, sim) 613 if err != nil { 614 t.Fatalf("Failed to deploy sender contract: %v", err) 615 } 616 sim.Commit() 617 618 if res, err := callfrom.CallFrom(nil); err != nil { 619 t.Errorf("Failed to call constant function: %v", err) 620 } else if res != (common.Address{}) { 621 t.Errorf("Invalid address returned, want: %x, got: %x", (common.Address{}), res) 622 } 623 624 for _, addr := range []common.Address{common.Address{}, common.Address{1}, common.Address{2}} { 625 if res, err := callfrom.CallFrom(&bind.CallOpts{From: addr}); err != nil { 626 t.Fatalf("Failed to call constant function: %v", err) 627 } else if res != addr { 628 t.Fatalf("Invalid address returned, want: %x, got: %x", addr, res) 629 } 630 } 631 `, 632 nil, 633 nil, 634 nil, 635 nil, 636 }, 637 { 638 `Underscorer`, 639 ` 640 contract Underscorer { 641 function UnderscoredOutput() constant returns (int _int, string _string) { 642 return (314, "pi"); 643 } 644 function LowerLowerCollision() constant returns (int _res, int res) { 645 return (1, 2); 646 } 647 function LowerUpperCollision() constant returns (int _res, int Res) { 648 return (1, 2); 649 } 650 function UpperLowerCollision() constant returns (int _Res, int res) { 651 return (1, 2); 652 } 653 function UpperUpperCollision() constant returns (int _Res, int Res) { 654 return (1, 2); 655 } 656 function PurelyUnderscoredOutput() constant returns (int _, int res) { 657 return (1, 2); 658 } 659 function AllPurelyUnderscoredOutput() constant returns (int _, int __) { 660 return (1, 2); 661 } 662 function _under_scored_func() constant returns (int _int) { 663 return 0; 664 } 665 } 666 `, []string{`6060604052341561000f57600080fd5b6103858061001e6000396000f30060606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303a592131461009357806346546dbe146100c357806367e6633d146100ec5780639df4848514610181578063af7486ab146101b1578063b564b34d146101e1578063e02ab24d14610211578063e409ca4514610241575b600080fd5b341561009e57600080fd5b6100a6610271565b604051808381526020018281526020019250505060405180910390f35b34156100ce57600080fd5b6100d6610286565b6040518082815260200191505060405180910390f35b34156100f757600080fd5b6100ff61028e565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561014557808201518184015260208101905061012a565b50505050905090810190601f1680156101725780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b341561018c57600080fd5b6101946102dc565b604051808381526020018281526020019250505060405180910390f35b34156101bc57600080fd5b6101c46102f1565b604051808381526020018281526020019250505060405180910390f35b34156101ec57600080fd5b6101f4610306565b604051808381526020018281526020019250505060405180910390f35b341561021c57600080fd5b61022461031b565b604051808381526020018281526020019250505060405180910390f35b341561024c57600080fd5b610254610330565b604051808381526020018281526020019250505060405180910390f35b60008060016002819150809050915091509091565b600080905090565b6000610298610345565b61013a8090506040805190810160405280600281526020017f7069000000000000000000000000000000000000000000000000000000000000815250915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b6020604051908101604052806000815250905600a165627a7a72305820d1a53d9de9d1e3d55cb3dc591900b63c4f1ded79114f7b79b332684840e186a40029`}, 667 []string{`[{"constant":true,"inputs":[],"name":"LowerUpperCollision","outputs":[{"name":"_res","type":"int256"},{"name":"Res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_under_scored_func","outputs":[{"name":"_int","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UnderscoredOutput","outputs":[{"name":"_int","type":"int256"},{"name":"_string","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PurelyUnderscoredOutput","outputs":[{"name":"_","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UpperLowerCollision","outputs":[{"name":"_Res","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AllPurelyUnderscoredOutput","outputs":[{"name":"_","type":"int256"},{"name":"__","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UpperUpperCollision","outputs":[{"name":"_Res","type":"int256"},{"name":"Res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LowerLowerCollision","outputs":[{"name":"_res","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"}]`}, 668 ` 669 "fmt" 670 "math/big" 671 672 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 673 "github.com/neatio-net/neatio/chain/core" 674 "github.com/neatio-net/neatio/utilities/crypto" 675 `, 676 ` 677 // Generate a new random account and a funded simulator 678 key, _ := crypto.GenerateKey() 679 auth := bind.NewKeyedTransactor(key) 680 681 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 682 defer sim.Close() 683 684 // Deploy a underscorer tester contract and execute a structured call on it 685 _, _, underscorer, err := DeployUnderscorer(auth, sim) 686 if err != nil { 687 t.Fatalf("Failed to deploy underscorer contract: %v", err) 688 } 689 sim.Commit() 690 691 // Verify that underscored return values correctly parse into structs 692 if res, err := underscorer.UnderscoredOutput(nil); err != nil { 693 t.Errorf("Failed to call constant function: %v", err) 694 } else if res.Int.Cmp(big.NewInt(314)) != 0 || res.String != "pi" { 695 t.Errorf("Invalid result, want: {314, \"pi\"}, got: %+v", res) 696 } 697 // Verify that underscored and non-underscored name collisions force tuple outputs 698 var a, b *big.Int 699 700 a, b, _ = underscorer.LowerLowerCollision(nil) 701 a, b, _ = underscorer.LowerUpperCollision(nil) 702 a, b, _ = underscorer.UpperLowerCollision(nil) 703 a, b, _ = underscorer.UpperUpperCollision(nil) 704 a, b, _ = underscorer.PurelyUnderscoredOutput(nil) 705 a, b, _ = underscorer.AllPurelyUnderscoredOutput(nil) 706 a, _ = underscorer.UnderScoredFunc(nil) 707 708 fmt.Println(a, b, err) 709 `, 710 nil, 711 nil, 712 nil, 713 nil, 714 }, 715 { 716 `Eventer`, 717 ` 718 contract Eventer { 719 event SimpleEvent ( 720 address indexed Addr, 721 bytes32 indexed Id, 722 bool indexed Flag, 723 uint Value 724 ); 725 function raiseSimpleEvent(address addr, bytes32 id, bool flag, uint value) { 726 SimpleEvent(addr, id, flag, value); 727 } 728 729 event NodataEvent ( 730 uint indexed Number, 731 int16 indexed Short, 732 uint32 indexed Long 733 ); 734 function raiseNodataEvent(uint number, int16 short, uint32 long) { 735 NodataEvent(number, short, long); 736 } 737 738 event DynamicEvent ( 739 string indexed IndexedString, 740 bytes indexed IndexedBytes, 741 string NonIndexedString, 742 bytes NonIndexedBytes 743 ); 744 function raiseDynamicEvent(string str, bytes blob) { 745 DynamicEvent(str, blob, str, blob); 746 } 747 748 event FixedBytesEvent ( 749 bytes24 indexed IndexedBytes, 750 bytes24 NonIndexedBytes 751 ); 752 function raiseFixedBytesEvent(bytes24 blob) { 753 FixedBytesEvent(blob, blob); 754 } 755 } 756 `, 757 []string{`608060405234801561001057600080fd5b5061043f806100206000396000f3006080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663528300ff8114610066578063630c31e2146100ff5780636cc6b94014610138578063c7d116dd1461015b575b600080fd5b34801561007257600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100fd94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506101829650505050505050565b005b34801561010b57600080fd5b506100fd73ffffffffffffffffffffffffffffffffffffffff60043516602435604435151560643561033c565b34801561014457600080fd5b506100fd67ffffffffffffffff1960043516610394565b34801561016757600080fd5b506100fd60043560243560010b63ffffffff604435166103d6565b806040518082805190602001908083835b602083106101b25780518252601f199092019160209182019101610193565b51815160209384036101000a6000190180199092169116179052604051919093018190038120875190955087945090928392508401908083835b6020831061020b5780518252601f1990920191602091820191016101ec565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207f3281fd4f5e152dd3385df49104a3f633706e21c9e80672e88d3bcddf33101f008484604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561029c578181015183820152602001610284565b50505050905090810190601f1680156102c95780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156102fc5781810151838201526020016102e4565b50505050905090810190601f1680156103295780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a35050565b60408051828152905183151591859173ffffffffffffffffffffffffffffffffffffffff8816917f1f097de4289df643bd9c11011cc61367aa12983405c021056e706eb5ba1250c8919081900360200190a450505050565b6040805167ffffffffffffffff19831680825291517fcdc4c1b1aed5524ffb4198d7a5839a34712baef5fa06884fac7559f4a5854e0a9181900360200190a250565b8063ffffffff168260010b847f3ca7f3a77e5e6e15e781850bc82e32adfa378a2a609370db24b4d0fae10da2c960405160405180910390a45050505600a165627a7a72305820468b5843bf653145bd924b323c64ef035d3dd922c170644b44d61aa666ea6eee0029`}, 758 []string{`[{"constant":false,"inputs":[{"name":"str","type":"string"},{"name":"blob","type":"bytes"}],"name":"raiseDynamicEvent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"id","type":"bytes32"},{"name":"flag","type":"bool"},{"name":"value","type":"uint256"}],"name":"raiseSimpleEvent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"blob","type":"bytes24"}],"name":"raiseFixedBytesEvent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"number","type":"uint256"},{"name":"short","type":"int16"},{"name":"long","type":"uint32"}],"name":"raiseNodataEvent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"Addr","type":"address"},{"indexed":true,"name":"Id","type":"bytes32"},{"indexed":true,"name":"Flag","type":"bool"},{"indexed":false,"name":"Value","type":"uint256"}],"name":"SimpleEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"Number","type":"uint256"},{"indexed":true,"name":"Short","type":"int16"},{"indexed":true,"name":"Long","type":"uint32"}],"name":"NodataEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"IndexedString","type":"string"},{"indexed":true,"name":"IndexedBytes","type":"bytes"},{"indexed":false,"name":"NonIndexedString","type":"string"},{"indexed":false,"name":"NonIndexedBytes","type":"bytes"}],"name":"DynamicEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"IndexedBytes","type":"bytes24"},{"indexed":false,"name":"NonIndexedBytes","type":"bytes24"}],"name":"FixedBytesEvent","type":"event"}]`}, 759 ` 760 "math/big" 761 "time" 762 763 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 764 "github.com/neatio-net/neatio/utilities/common" 765 "github.com/neatio-net/neatio/chain/core" 766 "github.com/neatio-net/neatio/utilities/crypto" 767 `, 768 ` 769 // Generate a new random account and a funded simulator 770 key, _ := crypto.GenerateKey() 771 auth := bind.NewKeyedTransactor(key) 772 773 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 774 defer sim.Close() 775 776 // Deploy an eventer contract 777 _, _, eventer, err := DeployEventer(auth, sim) 778 if err != nil { 779 t.Fatalf("Failed to deploy eventer contract: %v", err) 780 } 781 sim.Commit() 782 783 // Inject a few events into the contract, gradually more in each block 784 for i := 1; i <= 3; i++ { 785 for j := 1; j <= i; j++ { 786 if _, err := eventer.RaiseSimpleEvent(auth, common.Address{byte(j)}, [32]byte{byte(j)}, true, big.NewInt(int64(10*i+j))); err != nil { 787 t.Fatalf("block %d, event %d: raise failed: %v", i, j, err) 788 } 789 } 790 sim.Commit() 791 } 792 // Test filtering for certain events and ensure they can be found 793 sit, err := eventer.FilterSimpleEvent(nil, []common.Address{common.Address{1}, common.Address{3}}, [][32]byte{{byte(1)}, {byte(2)}, {byte(3)}}, []bool{true}) 794 if err != nil { 795 t.Fatalf("failed to filter for simple events: %v", err) 796 } 797 defer sit.Close() 798 799 sit.Next() 800 if sit.Event.Value.Uint64() != 11 || !sit.Event.Flag { 801 t.Errorf("simple log content mismatch: have %v, want {11, true}", sit.Event) 802 } 803 sit.Next() 804 if sit.Event.Value.Uint64() != 21 || !sit.Event.Flag { 805 t.Errorf("simple log content mismatch: have %v, want {21, true}", sit.Event) 806 } 807 sit.Next() 808 if sit.Event.Value.Uint64() != 31 || !sit.Event.Flag { 809 t.Errorf("simple log content mismatch: have %v, want {31, true}", sit.Event) 810 } 811 sit.Next() 812 if sit.Event.Value.Uint64() != 33 || !sit.Event.Flag { 813 t.Errorf("simple log content mismatch: have %v, want {33, true}", sit.Event) 814 } 815 816 if sit.Next() { 817 t.Errorf("unexpected simple event found: %+v", sit.Event) 818 } 819 if err = sit.Error(); err != nil { 820 t.Fatalf("simple event iteration failed: %v", err) 821 } 822 // Test raising and filtering for an event with no data component 823 if _, err := eventer.RaiseNodataEvent(auth, big.NewInt(314), 141, 271); err != nil { 824 t.Fatalf("failed to raise nodata event: %v", err) 825 } 826 sim.Commit() 827 828 nit, err := eventer.FilterNodataEvent(nil, []*big.Int{big.NewInt(314)}, []int16{140, 141, 142}, []uint32{271}) 829 if err != nil { 830 t.Fatalf("failed to filter for nodata events: %v", err) 831 } 832 defer nit.Close() 833 834 if !nit.Next() { 835 t.Fatalf("nodata log not found: %v", nit.Error()) 836 } 837 if nit.Event.Number.Uint64() != 314 { 838 t.Errorf("nodata log content mismatch: have %v, want 314", nit.Event.Number) 839 } 840 if nit.Next() { 841 t.Errorf("unexpected nodata event found: %+v", nit.Event) 842 } 843 if err = nit.Error(); err != nil { 844 t.Fatalf("nodata event iteration failed: %v", err) 845 } 846 // Test raising and filtering for events with dynamic indexed components 847 if _, err := eventer.RaiseDynamicEvent(auth, "Hello", []byte("World")); err != nil { 848 t.Fatalf("failed to raise dynamic event: %v", err) 849 } 850 sim.Commit() 851 852 dit, err := eventer.FilterDynamicEvent(nil, []string{"Hi", "Hello", "Bye"}, [][]byte{[]byte("World")}) 853 if err != nil { 854 t.Fatalf("failed to filter for dynamic events: %v", err) 855 } 856 defer dit.Close() 857 858 if !dit.Next() { 859 t.Fatalf("dynamic log not found: %v", dit.Error()) 860 } 861 if dit.Event.NonIndexedString != "Hello" || string(dit.Event.NonIndexedBytes) != "World" || dit.Event.IndexedString != common.HexToHash("0x06b3dfaec148fb1bb2b066f10ec285e7c9bf402ab32aa78a5d38e34566810cd2") || dit.Event.IndexedBytes != common.HexToHash("0xf2208c967df089f60420785795c0a9ba8896b0f6f1867fa7f1f12ad6f79c1a18") { 862 t.Errorf("dynamic log content mismatch: have %v, want {'0x06b3dfaec148fb1bb2b066f10ec285e7c9bf402ab32aa78a5d38e34566810cd2, '0xf2208c967df089f60420785795c0a9ba8896b0f6f1867fa7f1f12ad6f79c1a18', 'Hello', 'World'}", dit.Event) 863 } 864 if dit.Next() { 865 t.Errorf("unexpected dynamic event found: %+v", dit.Event) 866 } 867 if err = dit.Error(); err != nil { 868 t.Fatalf("dynamic event iteration failed: %v", err) 869 } 870 // Test raising and filtering for events with fixed bytes components 871 var fblob [24]byte 872 copy(fblob[:], []byte("Fixed Bytes")) 873 874 if _, err := eventer.RaiseFixedBytesEvent(auth, fblob); err != nil { 875 t.Fatalf("failed to raise fixed bytes event: %v", err) 876 } 877 sim.Commit() 878 879 fit, err := eventer.FilterFixedBytesEvent(nil, [][24]byte{fblob}) 880 if err != nil { 881 t.Fatalf("failed to filter for fixed bytes events: %v", err) 882 } 883 defer fit.Close() 884 885 if !fit.Next() { 886 t.Fatalf("fixed bytes log not found: %v", fit.Error()) 887 } 888 if fit.Event.NonIndexedBytes != fblob || fit.Event.IndexedBytes != fblob { 889 t.Errorf("fixed bytes log content mismatch: have %v, want {'%x', '%x'}", fit.Event, fblob, fblob) 890 } 891 if fit.Next() { 892 t.Errorf("unexpected fixed bytes event found: %+v", fit.Event) 893 } 894 if err = fit.Error(); err != nil { 895 t.Fatalf("fixed bytes event iteration failed: %v", err) 896 } 897 // Test subscribing to an event and raising it afterwards 898 ch := make(chan *EventerSimpleEvent, 16) 899 sub, err := eventer.WatchSimpleEvent(nil, ch, nil, nil, nil) 900 if err != nil { 901 t.Fatalf("failed to subscribe to simple events: %v", err) 902 } 903 if _, err := eventer.RaiseSimpleEvent(auth, common.Address{255}, [32]byte{255}, true, big.NewInt(255)); err != nil { 904 t.Fatalf("failed to raise subscribed simple event: %v", err) 905 } 906 sim.Commit() 907 908 select { 909 case event := <-ch: 910 if event.Value.Uint64() != 255 { 911 t.Errorf("simple log content mismatch: have %v, want 255", event) 912 } 913 case <-time.After(250 * time.Millisecond): 914 t.Fatalf("subscribed simple event didn't arrive") 915 } 916 // Unsubscribe from the event and make sure we're not delivered more 917 sub.Unsubscribe() 918 919 if _, err := eventer.RaiseSimpleEvent(auth, common.Address{254}, [32]byte{254}, true, big.NewInt(254)); err != nil { 920 t.Fatalf("failed to raise subscribed simple event: %v", err) 921 } 922 sim.Commit() 923 924 select { 925 case event := <-ch: 926 t.Fatalf("unsubscribed simple event arrived: %v", event) 927 case <-time.After(250 * time.Millisecond): 928 } 929 `, 930 nil, 931 nil, 932 nil, 933 nil, 934 }, 935 { 936 `DeeplyNestedArray`, 937 ` 938 contract DeeplyNestedArray { 939 uint64[3][4][5] public deepUint64Array; 940 function storeDeepUintArray(uint64[3][4][5] arr) public { 941 deepUint64Array = arr; 942 } 943 function retrieveDeepArray() public view returns (uint64[3][4][5]) { 944 return deepUint64Array; 945 } 946 } 947 `, 948 []string{`6060604052341561000f57600080fd5b6106438061001e6000396000f300606060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063344248551461005c5780638ed4573a1461011457806398ed1856146101ab575b600080fd5b341561006757600080fd5b610112600480806107800190600580602002604051908101604052809291906000905b828210156101055783826101800201600480602002604051908101604052809291906000905b828210156100f25783826060020160038060200260405190810160405280929190826003602002808284378201915050505050815260200190600101906100b0565b505050508152602001906001019061008a565b5050505091905050610208565b005b341561011f57600080fd5b61012761021d565b604051808260056000925b8184101561019b578284602002015160046000925b8184101561018d5782846020020151600360200280838360005b8381101561017c578082015181840152602081019050610161565b505050509050019260010192610147565b925050509260010192610132565b9250505091505060405180910390f35b34156101b657600080fd5b6101de6004808035906020019091908035906020019091908035906020019091905050610309565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b80600090600561021992919061035f565b5050565b6102256103b0565b6000600580602002604051908101604052809291906000905b8282101561030057838260040201600480602002604051908101604052809291906000905b828210156102ed578382016003806020026040519081016040528092919082600380156102d9576020028201916000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116102945790505b505050505081526020019060010190610263565b505050508152602001906001019061023e565b50505050905090565b60008360058110151561031857fe5b600402018260048110151561032957fe5b018160038110151561033757fe5b6004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b826005600402810192821561039f579160200282015b8281111561039e5782518290600461038e9291906103df565b5091602001919060040190610375565b5b5090506103ac919061042d565b5090565b610780604051908101604052806005905b6103c9610459565b8152602001906001900390816103c15790505090565b826004810192821561041c579160200282015b8281111561041b5782518290600361040b929190610488565b50916020019190600101906103f2565b5b5090506104299190610536565b5090565b61045691905b8082111561045257600081816104499190610562565b50600401610433565b5090565b90565b610180604051908101604052806004905b6104726105a7565b81526020019060019003908161046a5790505090565b82600380016004900481019282156105255791602002820160005b838211156104ef57835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555092602001926008016020816007010492830192600103026104a3565b80156105235782816101000a81549067ffffffffffffffff02191690556008016020816007010492830192600103026104ef565b505b50905061053291906105d9565b5090565b61055f91905b8082111561055b57600081816105529190610610565b5060010161053c565b5090565b90565b50600081816105719190610610565b50600101600081816105839190610610565b50600101600081816105959190610610565b5060010160006105a59190610610565b565b6060604051908101604052806003905b600067ffffffffffffffff168152602001906001900390816105b75790505090565b61060d91905b8082111561060957600081816101000a81549067ffffffffffffffff0219169055506001016105df565b5090565b90565b50600090555600a165627a7a7230582087e5a43f6965ab6ef7a4ff056ab80ed78fd8c15cff57715a1bf34ec76a93661c0029`}, 949 []string{`[{"constant":false,"inputs":[{"name":"arr","type":"uint64[3][4][5]"}],"name":"storeDeepUintArray","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"retrieveDeepArray","outputs":[{"name":"","type":"uint64[3][4][5]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"deepUint64Array","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"}]`}, 950 ` 951 "math/big" 952 953 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 954 "github.com/neatio-net/neatio/chain/core" 955 "github.com/neatio-net/neatio/utilities/crypto" 956 `, 957 ` 958 // Generate a new random account and a funded simulator 959 key, _ := crypto.GenerateKey() 960 auth := bind.NewKeyedTransactor(key) 961 962 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 963 defer sim.Close() 964 965 //deploy the test contract 966 _, _, testContract, err := DeployDeeplyNestedArray(auth, sim) 967 if err != nil { 968 t.Fatalf("Failed to deploy test contract: %v", err) 969 } 970 971 // Finish deploy. 972 sim.Commit() 973 974 //Create coordinate-filled array, for testing purposes. 975 testArr := [5][4][3]uint64{} 976 for i := 0; i < 5; i++ { 977 testArr[i] = [4][3]uint64{} 978 for j := 0; j < 4; j++ { 979 testArr[i][j] = [3]uint64{} 980 for k := 0; k < 3; k++ { 981 //pack the coordinates, each array value will be unique, and can be validated easily. 982 testArr[i][j][k] = uint64(i) << 16 | uint64(j) << 8 | uint64(k) 983 } 984 } 985 } 986 987 if _, err := testContract.StoreDeepUintArray(&bind.TransactOpts{ 988 From: auth.From, 989 Signer: auth.Signer, 990 }, testArr); err != nil { 991 t.Fatalf("Failed to store nested array in test contract: %v", err) 992 } 993 994 sim.Commit() 995 996 retrievedArr, err := testContract.RetrieveDeepArray(&bind.CallOpts{ 997 From: auth.From, 998 Pending: false, 999 }) 1000 if err != nil { 1001 t.Fatalf("Failed to retrieve nested array from test contract: %v", err) 1002 } 1003 1004 //quick check to see if contents were copied 1005 // (See accounts/abi/unpack_test.go for more extensive testing) 1006 if retrievedArr[4][3][2] != testArr[4][3][2] { 1007 t.Fatalf("Retrieved value does not match expected value! got: %d, expected: %d. %v", retrievedArr[4][3][2], testArr[4][3][2], err) 1008 } 1009 `, 1010 nil, 1011 nil, 1012 nil, 1013 nil, 1014 }, 1015 { 1016 `CallbackParam`, 1017 ` 1018 contract FunctionPointerTest { 1019 function test(function(uint256) external callback) external { 1020 callback(1); 1021 } 1022 } 1023 `, 1024 []string{`608060405234801561001057600080fd5b5061015e806100206000396000f3fe60806040526004361061003b576000357c010000000000000000000000000000000000000000000000000000000090048063d7a5aba214610040575b600080fd5b34801561004c57600080fd5b506100be6004803603602081101561006357600080fd5b810190808035806c0100000000000000000000000090049068010000000000000000900463ffffffff1677ffffffffffffffffffffffffffffffffffffffffffffffff169091602001919093929190939291905050506100c0565b005b818160016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561011657600080fd5b505af115801561012a573d6000803e3d6000fd5b50505050505056fea165627a7a7230582062f87455ff84be90896dbb0c4e4ddb505c600d23089f8e80a512548440d7e2580029`}, 1025 []string{`[ 1026 { 1027 "constant": false, 1028 "inputs": [ 1029 { 1030 "name": "callback", 1031 "type": "function" 1032 } 1033 ], 1034 "name": "test", 1035 "outputs": [], 1036 "payable": false, 1037 "stateMutability": "nonpayable", 1038 "type": "function" 1039 } 1040 ]`}, ` 1041 "strings" 1042 `, 1043 ` 1044 if strings.Compare("test(function)", CallbackParamFuncSigs["d7a5aba2"]) != 0 { 1045 t.Fatalf("") 1046 } 1047 `, 1048 []map[string]string{ 1049 { 1050 "test(function)": "d7a5aba2", 1051 }, 1052 }, 1053 nil, 1054 nil, 1055 nil, 1056 }, { 1057 `Tuple`, 1058 ` 1059 pragma solidity >=0.4.19 <0.6.0; 1060 pragma experimental ABIEncoderV2; 1061 1062 contract Tuple { 1063 struct S { uint a; uint[] b; T[] c; } 1064 struct T { uint x; uint y; } 1065 struct P { uint8 x; uint8 y; } 1066 struct Q { uint16 x; uint16 y; } 1067 event TupleEvent(S a, T[2][] b, T[][2] c, S[] d, uint[] e); 1068 event TupleEvent2(P[]); 1069 1070 function func1(S memory a, T[2][] memory b, T[][2] memory c, S[] memory d, uint[] memory e) public pure returns (S memory, T[2][] memory, T[][2] memory, S[] memory, uint[] memory) { 1071 return (a, b, c, d, e); 1072 } 1073 function func2(S memory a, T[2][] memory b, T[][2] memory c, S[] memory d, uint[] memory e) public { 1074 emit TupleEvent(a, b, c, d, e); 1075 } 1076 function func3(Q[] memory) public pure {} // call function, nothing to return 1077 } 1078 `, 1079 []string{`60806040523480156100115760006000fd5b50610017565b6110b2806100266000396000f3fe60806040523480156100115760006000fd5b50600436106100465760003560e01c8063443c79b41461004c578063d0062cdd14610080578063e4d9a43b1461009c57610046565b60006000fd5b610066600480360361006191908101906107b8565b6100b8565b604051610077959493929190610ccb565b60405180910390f35b61009a600480360361009591908101906107b8565b6100ef565b005b6100b660048036036100b19190810190610775565b610136565b005b6100c061013a565b60606100ca61015e565b606060608989898989945094509450945094506100e2565b9550955095509550959050565b7f18d6e66efa53739ca6d13626f35ebc700b31cced3eddb50c70bbe9c082c6cd008585858585604051610126959493929190610ccb565b60405180910390a15b5050505050565b5b50565b60405180606001604052806000815260200160608152602001606081526020015090565b60405180604001604052806002905b606081526020019060019003908161016d57905050905661106e565b600082601f830112151561019d5760006000fd5b81356101b06101ab82610d6f565b610d41565b915081818352602084019350602081019050838560808402820111156101d65760006000fd5b60005b8381101561020757816101ec888261037a565b8452602084019350608083019250505b6001810190506101d9565b5050505092915050565b600082601f83011215156102255760006000fd5b600261023861023382610d98565b610d41565b9150818360005b83811015610270578135860161025588826103f3565b8452602084019350602083019250505b60018101905061023f565b5050505092915050565b600082601f830112151561028e5760006000fd5b81356102a161029c82610dbb565b610d41565b915081818352602084019350602081019050838560408402820111156102c75760006000fd5b60005b838110156102f857816102dd888261058b565b8452602084019350604083019250505b6001810190506102ca565b5050505092915050565b600082601f83011215156103165760006000fd5b813561032961032482610de4565b610d41565b9150818183526020840193506020810190508360005b83811015610370578135860161035588826105d8565b8452602084019350602083019250505b60018101905061033f565b5050505092915050565b600082601f830112151561038e5760006000fd5b60026103a161039c82610e0d565b610d41565b915081838560408402820111156103b85760006000fd5b60005b838110156103e957816103ce88826106fe565b8452602084019350604083019250505b6001810190506103bb565b5050505092915050565b600082601f83011215156104075760006000fd5b813561041a61041582610e30565b610d41565b915081818352602084019350602081019050838560408402820111156104405760006000fd5b60005b83811015610471578161045688826106fe565b8452602084019350604083019250505b600181019050610443565b5050505092915050565b600082601f830112151561048f5760006000fd5b81356104a261049d82610e59565b610d41565b915081818352602084019350602081019050838560208402820111156104c85760006000fd5b60005b838110156104f957816104de8882610760565b8452602084019350602083019250505b6001810190506104cb565b5050505092915050565b600082601f83011215156105175760006000fd5b813561052a61052582610e82565b610d41565b915081818352602084019350602081019050838560208402820111156105505760006000fd5b60005b8381101561058157816105668882610760565b8452602084019350602083019250505b600181019050610553565b5050505092915050565b60006040828403121561059e5760006000fd5b6105a86040610d41565b905060006105b88482850161074b565b60008301525060206105cc8482850161074b565b60208301525092915050565b6000606082840312156105eb5760006000fd5b6105f56060610d41565b9050600061060584828501610760565b600083015250602082013567ffffffffffffffff8111156106265760006000fd5b6106328482850161047b565b602083015250604082013567ffffffffffffffff8111156106535760006000fd5b61065f848285016103f3565b60408301525092915050565b60006060828403121561067e5760006000fd5b6106886060610d41565b9050600061069884828501610760565b600083015250602082013567ffffffffffffffff8111156106b95760006000fd5b6106c58482850161047b565b602083015250604082013567ffffffffffffffff8111156106e65760006000fd5b6106f2848285016103f3565b60408301525092915050565b6000604082840312156107115760006000fd5b61071b6040610d41565b9050600061072b84828501610760565b600083015250602061073f84828501610760565b60208301525092915050565b60008135905061075a8161103a565b92915050565b60008135905061076f81611054565b92915050565b6000602082840312156107885760006000fd5b600082013567ffffffffffffffff8111156107a35760006000fd5b6107af8482850161027a565b91505092915050565b6000600060006000600060a086880312156107d35760006000fd5b600086013567ffffffffffffffff8111156107ee5760006000fd5b6107fa8882890161066b565b955050602086013567ffffffffffffffff8111156108185760006000fd5b61082488828901610189565b945050604086013567ffffffffffffffff8111156108425760006000fd5b61084e88828901610211565b935050606086013567ffffffffffffffff81111561086c5760006000fd5b61087888828901610302565b925050608086013567ffffffffffffffff8111156108965760006000fd5b6108a288828901610503565b9150509295509295909350565b60006108bb8383610a6a565b60808301905092915050565b60006108d38383610ac2565b905092915050565b60006108e78383610c36565b905092915050565b60006108fb8383610c8d565b60408301905092915050565b60006109138383610cbc565b60208301905092915050565b600061092a82610f0f565b6109348185610fb7565b935061093f83610eab565b8060005b8381101561097157815161095788826108af565b975061096283610f5c565b9250505b600181019050610943565b5085935050505092915050565b600061098982610f1a565b6109938185610fc8565b9350836020820285016109a585610ebb565b8060005b858110156109e257848403895281516109c285826108c7565b94506109cd83610f69565b925060208a019950505b6001810190506109a9565b50829750879550505050505092915050565b60006109ff82610f25565b610a098185610fd3565b935083602082028501610a1b85610ec5565b8060005b85811015610a585784840389528151610a3885826108db565b9450610a4383610f76565b925060208a019950505b600181019050610a1f565b50829750879550505050505092915050565b610a7381610f30565b610a7d8184610fe4565b9250610a8882610ed5565b8060005b83811015610aba578151610aa087826108ef565b9650610aab83610f83565b9250505b600181019050610a8c565b505050505050565b6000610acd82610f3b565b610ad78185610fef565b9350610ae283610edf565b8060005b83811015610b14578151610afa88826108ef565b9750610b0583610f90565b9250505b600181019050610ae6565b5085935050505092915050565b6000610b2c82610f51565b610b368185611011565b9350610b4183610eff565b8060005b83811015610b73578151610b598882610907565b9750610b6483610faa565b9250505b600181019050610b45565b5085935050505092915050565b6000610b8b82610f46565b610b958185611000565b9350610ba083610eef565b8060005b83811015610bd2578151610bb88882610907565b9750610bc383610f9d565b9250505b600181019050610ba4565b5085935050505092915050565b6000606083016000830151610bf76000860182610cbc565b5060208301518482036020860152610c0f8282610b80565b91505060408301518482036040860152610c298282610ac2565b9150508091505092915050565b6000606083016000830151610c4e6000860182610cbc565b5060208301518482036020860152610c668282610b80565b91505060408301518482036040860152610c808282610ac2565b9150508091505092915050565b604082016000820151610ca36000850182610cbc565b506020820151610cb66020850182610cbc565b50505050565b610cc581611030565b82525050565b600060a0820190508181036000830152610ce58188610bdf565b90508181036020830152610cf9818761091f565b90508181036040830152610d0d818661097e565b90508181036060830152610d2181856109f4565b90508181036080830152610d358184610b21565b90509695505050505050565b6000604051905081810181811067ffffffffffffffff82111715610d655760006000fd5b8060405250919050565b600067ffffffffffffffff821115610d875760006000fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610db05760006000fd5b602082029050919050565b600067ffffffffffffffff821115610dd35760006000fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610dfc5760006000fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610e255760006000fd5b602082029050919050565b600067ffffffffffffffff821115610e485760006000fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610e715760006000fd5b602082029050602081019050919050565b600067ffffffffffffffff821115610e9a5760006000fd5b602082029050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061ffff82169050919050565b6000819050919050565b61104381611022565b811415156110515760006000fd5b50565b61105d81611030565b8114151561106b5760006000fd5b50565bfea365627a7a72315820d78c6ba7ee332581e6c4d9daa5fc07941841230f7ce49edf6e05b1b63853e8746c6578706572696d656e74616cf564736f6c634300050c0040`}, 1080 []string{` 1081 [{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"indexed":false,"internalType":"struct Tuple.S","name":"a","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"indexed":false,"internalType":"struct Tuple.T[2][]","name":"b","type":"tuple[2][]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"indexed":false,"internalType":"struct Tuple.T[][2]","name":"c","type":"tuple[][2]"},{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"indexed":false,"internalType":"struct Tuple.S[]","name":"d","type":"tuple[]"},{"indexed":false,"internalType":"uint256[]","name":"e","type":"uint256[]"}],"name":"TupleEvent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"}],"indexed":false,"internalType":"struct Tuple.P[]","name":"","type":"tuple[]"}],"name":"TupleEvent2","type":"event"},{"constant":true,"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"internalType":"struct Tuple.S","name":"a","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[2][]","name":"b","type":"tuple[2][]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[][2]","name":"c","type":"tuple[][2]"},{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"internalType":"struct Tuple.S[]","name":"d","type":"tuple[]"},{"internalType":"uint256[]","name":"e","type":"uint256[]"}],"name":"func1","outputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"internalType":"struct Tuple.S","name":"","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[2][]","name":"","type":"tuple[2][]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[][2]","name":"","type":"tuple[][2]"},{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"internalType":"struct Tuple.S[]","name":"","type":"tuple[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"internalType":"struct Tuple.S","name":"a","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[2][]","name":"b","type":"tuple[2][]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[][2]","name":"c","type":"tuple[][2]"},{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"internalType":"struct Tuple.T[]","name":"c","type":"tuple[]"}],"internalType":"struct Tuple.S[]","name":"d","type":"tuple[]"},{"internalType":"uint256[]","name":"e","type":"uint256[]"}],"name":"func2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"components":[{"internalType":"uint16","name":"x","type":"uint16"},{"internalType":"uint16","name":"y","type":"uint16"}],"internalType":"struct Tuple.Q[]","name":"","type":"tuple[]"}],"name":"func3","outputs":[],"payable":false,"stateMutability":"pure","type":"function"}] 1082 `}, 1083 ` 1084 "math/big" 1085 "reflect" 1086 1087 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 1088 "github.com/neatio-net/neatio/chain/core" 1089 "github.com/neatio-net/neatio/utilities/crypto" 1090 `, 1091 1092 ` 1093 key, _ := crypto.GenerateKey() 1094 auth := bind.NewKeyedTransactor(key) 1095 1096 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 1097 defer sim.Close() 1098 1099 _, _, contract, err := DeployTuple(auth, sim) 1100 if err != nil { 1101 t.Fatalf("deploy contract failed %v", err) 1102 } 1103 sim.Commit() 1104 1105 check := func(a, b interface{}, errMsg string) { 1106 if !reflect.DeepEqual(a, b) { 1107 t.Fatal(errMsg) 1108 } 1109 } 1110 1111 a := TupleS{ 1112 A: big.NewInt(1), 1113 B: []*big.Int{big.NewInt(2), big.NewInt(3)}, 1114 C: []TupleT{ 1115 { 1116 X: big.NewInt(4), 1117 Y: big.NewInt(5), 1118 }, 1119 { 1120 X: big.NewInt(6), 1121 Y: big.NewInt(7), 1122 }, 1123 }, 1124 } 1125 1126 b := [][2]TupleT{ 1127 { 1128 { 1129 X: big.NewInt(8), 1130 Y: big.NewInt(9), 1131 }, 1132 { 1133 X: big.NewInt(10), 1134 Y: big.NewInt(11), 1135 }, 1136 }, 1137 } 1138 1139 c := [2][]TupleT{ 1140 { 1141 { 1142 X: big.NewInt(12), 1143 Y: big.NewInt(13), 1144 }, 1145 { 1146 X: big.NewInt(14), 1147 Y: big.NewInt(15), 1148 }, 1149 }, 1150 { 1151 { 1152 X: big.NewInt(16), 1153 Y: big.NewInt(17), 1154 }, 1155 }, 1156 } 1157 1158 d := []TupleS{a} 1159 1160 e := []*big.Int{big.NewInt(18), big.NewInt(19)} 1161 ret1, ret2, ret3, ret4, ret5, err := contract.Func1(nil, a, b, c, d, e) 1162 if err != nil { 1163 t.Fatalf("invoke contract failed, err %v", err) 1164 } 1165 check(ret1, a, "ret1 mismatch") 1166 check(ret2, b, "ret2 mismatch") 1167 check(ret3, c, "ret3 mismatch") 1168 check(ret4, d, "ret4 mismatch") 1169 check(ret5, e, "ret5 mismatch") 1170 1171 _, err = contract.Func2(auth, a, b, c, d, e) 1172 if err != nil { 1173 t.Fatalf("invoke contract failed, err %v", err) 1174 } 1175 sim.Commit() 1176 1177 iter, err := contract.FilterTupleEvent(nil) 1178 if err != nil { 1179 t.Fatalf("failed to create event filter, err %v", err) 1180 } 1181 defer iter.Close() 1182 1183 iter.Next() 1184 check(iter.Event.A, a, "field1 mismatch") 1185 check(iter.Event.B, b, "field2 mismatch") 1186 check(iter.Event.C, c, "field3 mismatch") 1187 check(iter.Event.D, d, "field4 mismatch") 1188 check(iter.Event.E, e, "field5 mismatch") 1189 1190 err = contract.Func3(nil, nil) 1191 if err != nil { 1192 t.Fatalf("failed to call function which has no return, err %v", err) 1193 } 1194 `, 1195 nil, 1196 nil, 1197 nil, 1198 nil, 1199 }, 1200 { 1201 `UseLibrary`, 1202 ` 1203 library Math { 1204 function add(uint a, uint b) public view returns(uint) { 1205 return a + b; 1206 } 1207 } 1208 1209 contract UseLibrary { 1210 function add (uint c, uint d) public view returns(uint) { 1211 return Math.add(c,d); 1212 } 1213 } 1214 `, 1215 []string{ 1216 `608060405234801561001057600080fd5b5061011d806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063771602f714602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135605f565b60408051918252519081900360200190f35b600073__$b98c933f0a6ececcd167bd4f9d3299b1a0$__63771602f784846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801560b757600080fd5b505af415801560ca573d6000803e3d6000fd5b505050506040513d602081101560df57600080fd5b5051939250505056fea265627a7a72305820eb5c38f42445604cfa43d85e3aa5ecc48b0a646456c902dd48420ae7241d06f664736f6c63430005090032`, 1217 `60a3610024600b82828239805160001a607314601757fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063771602f7146038575b600080fd5b605860048036036040811015604c57600080fd5b5080359060200135606a565b60408051918252519081900360200190f35b019056fea265627a7a723058206fc6c05f3078327f9c763edffdb5ab5f8bd212e293a1306c7d0ad05af3ad35f464736f6c63430005090032`, 1218 }, 1219 []string{ 1220 `[{"constant":true,"inputs":[{"name":"c","type":"uint256"},{"name":"d","type":"uint256"}],"name":"add","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]`, 1221 `[{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"add","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]`, 1222 }, 1223 ` 1224 "math/big" 1225 1226 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 1227 "github.com/neatio-net/neatio/chain/core" 1228 "github.com/neatio-net/neatio/utilities/crypto" 1229 `, 1230 ` 1231 // Generate a new random account and a funded simulator 1232 key, _ := crypto.GenerateKey() 1233 auth := bind.NewKeyedTransactor(key) 1234 1235 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 1236 defer sim.Close() 1237 1238 //deploy the test contract 1239 _, _, testContract, err := DeployUseLibrary(auth, sim) 1240 if err != nil { 1241 t.Fatalf("Failed to deploy test contract: %v", err) 1242 } 1243 1244 // Finish deploy. 1245 sim.Commit() 1246 1247 // Check that the library contract has been deployed 1248 // by calling the contract's add function. 1249 res, err := testContract.Add(&bind.CallOpts{ 1250 From: auth.From, 1251 Pending: false, 1252 }, big.NewInt(1), big.NewInt(2)) 1253 if err != nil { 1254 t.Fatalf("Failed to call linked contract: %v", err) 1255 } 1256 if res.Cmp(big.NewInt(3)) != 0 { 1257 t.Fatalf("Add did not return the correct result: %d != %d", res, 3) 1258 } 1259 `, 1260 nil, 1261 map[string]string{ 1262 "b98c933f0a6ececcd167bd4f9d3299b1a0": "Math", 1263 }, 1264 nil, 1265 []string{"UseLibrary", "Math"}, 1266 }, { 1267 "Overload", 1268 ` 1269 pragma solidity ^0.5.10; 1270 1271 contract overload { 1272 mapping(address => uint256) balances; 1273 1274 event bar(uint256 i); 1275 event bar(uint256 i, uint256 j); 1276 1277 function foo(uint256 i) public { 1278 emit bar(i); 1279 } 1280 function foo(uint256 i, uint256 j) public { 1281 emit bar(i, j); 1282 } 1283 } 1284 `, 1285 []string{`608060405234801561001057600080fd5b50610153806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806304bc52f81461003b5780632fbebd3814610073575b600080fd5b6100716004803603604081101561005157600080fd5b8101908080359060200190929190803590602001909291905050506100a1565b005b61009f6004803603602081101561008957600080fd5b81019080803590602001909291905050506100e4565b005b7fae42e9514233792a47a1e4554624e83fe852228e1503f63cd383e8a431f4f46d8282604051808381526020018281526020019250505060405180910390a15050565b7f0423a1321222a0a8716c22b92fac42d85a45a612b696a461784d9fa537c81e5c816040518082815260200191505060405180910390a15056fea265627a7a72305820e22b049858b33291cbe67eeaece0c5f64333e439d27032ea8337d08b1de18fe864736f6c634300050a0032`}, 1286 []string{`[{"constant":false,"inputs":[{"name":"i","type":"uint256"},{"name":"j","type":"uint256"}],"name":"foo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i","type":"uint256"}],"name":"foo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"i","type":"uint256"}],"name":"bar","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"i","type":"uint256"},{"indexed":false,"name":"j","type":"uint256"}],"name":"bar","type":"event"}]`}, 1287 ` 1288 "math/big" 1289 "time" 1290 1291 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 1292 "github.com/neatio-net/neatio/chain/core" 1293 "github.com/neatio-net/neatio/utilities/crypto" 1294 `, 1295 ` 1296 // Initialize test accounts 1297 key, _ := crypto.GenerateKey() 1298 auth := bind.NewKeyedTransactor(key) 1299 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 1300 defer sim.Close() 1301 1302 // deploy the test contract 1303 _, _, contract, err := DeployOverload(auth, sim) 1304 if err != nil { 1305 t.Fatalf("Failed to deploy contract: %v", err) 1306 } 1307 // Finish deploy. 1308 sim.Commit() 1309 1310 resCh, stopCh := make(chan uint64), make(chan struct{}) 1311 1312 go func() { 1313 barSink := make(chan *OverloadBar) 1314 sub, _ := contract.WatchBar(nil, barSink) 1315 defer sub.Unsubscribe() 1316 1317 bar0Sink := make(chan *OverloadBar0) 1318 sub0, _ := contract.WatchBar0(nil, bar0Sink) 1319 defer sub0.Unsubscribe() 1320 1321 for { 1322 select { 1323 case ev := <-barSink: 1324 resCh <- ev.I.Uint64() 1325 case ev := <-bar0Sink: 1326 resCh <- ev.I.Uint64() + ev.J.Uint64() 1327 case <-stopCh: 1328 return 1329 } 1330 } 1331 }() 1332 contract.Foo(auth, big.NewInt(1), big.NewInt(2)) 1333 sim.Commit() 1334 select { 1335 case n := <-resCh: 1336 if n != 3 { 1337 t.Fatalf("Invalid bar0 event") 1338 } 1339 case <-time.NewTimer(100 * time.Millisecond).C: 1340 t.Fatalf("Wait bar0 event timeout") 1341 } 1342 1343 contract.Foo0(auth, big.NewInt(1)) 1344 sim.Commit() 1345 select { 1346 case n := <-resCh: 1347 if n != 1 { 1348 t.Fatalf("Invalid bar event") 1349 } 1350 case <-time.NewTimer(100 * time.Millisecond).C: 1351 t.Fatalf("Wait bar event timeout") 1352 } 1353 close(stopCh) 1354 `, 1355 nil, 1356 nil, 1357 nil, 1358 nil, 1359 }, 1360 { 1361 "IdentifierCollision", 1362 ` 1363 pragma solidity >=0.4.19 <0.6.0; 1364 1365 contract IdentifierCollision { 1366 uint public _myVar; 1367 1368 function MyVar() public view returns (uint) { 1369 return _myVar; 1370 } 1371 } 1372 `, 1373 []string{"60806040523480156100115760006000fd5b50610017565b60c3806100256000396000f3fe608060405234801560105760006000fd5b506004361060365760003560e01c806301ad4d8714603c5780634ef1f0ad146058576036565b60006000fd5b60426074565b6040518082815260200191505060405180910390f35b605e607d565b6040518082815260200191505060405180910390f35b60006000505481565b60006000600050549050608b565b9056fea265627a7a7231582067c8d84688b01c4754ba40a2a871cede94ea1f28b5981593ab2a45b46ac43af664736f6c634300050c0032"}, 1374 []string{`[{"constant":true,"inputs":[],"name":"MyVar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_myVar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]`}, 1375 ` 1376 "math/big" 1377 1378 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 1379 "github.com/neatio-net/neatio/utilities/crypto" 1380 "github.com/neatio-net/neatio/chain/core" 1381 `, 1382 ` 1383 // Initialize test accounts 1384 key, _ := crypto.GenerateKey() 1385 addr := crypto.PubkeyToAddress(key.PublicKey) 1386 1387 // Deploy registrar contract 1388 sim := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}}, 10000000) 1389 defer sim.Close() 1390 1391 transactOpts := bind.NewKeyedTransactor(key) 1392 _, _, _, err := DeployIdentifierCollision(transactOpts, sim) 1393 if err != nil { 1394 t.Fatalf("failed to deploy contract: %v", err) 1395 } 1396 `, 1397 nil, 1398 nil, 1399 map[string]string{"_myVar": "pubVar"}, 1400 nil, 1401 }, 1402 { 1403 "MultiContracts", 1404 ` 1405 pragma solidity ^0.5.11; 1406 pragma experimental ABIEncoderV2; 1407 1408 library ExternalLib { 1409 struct SharedStruct{ 1410 uint256 f1; 1411 bytes32 f2; 1412 } 1413 } 1414 1415 contract ContractOne { 1416 function foo(ExternalLib.SharedStruct memory s) pure public { 1417 // Do stuff 1418 } 1419 } 1420 1421 contract ContractTwo { 1422 function bar(ExternalLib.SharedStruct memory s) pure public { 1423 // Do stuff 1424 } 1425 } 1426 `, 1427 []string{ 1428 `60806040523480156100115760006000fd5b50610017565b6101b5806100266000396000f3fe60806040523480156100115760006000fd5b50600436106100305760003560e01c80639d8a8ba81461003657610030565b60006000fd5b610050600480360361004b91908101906100d1565b610052565b005b5b5056610171565b6000813590506100698161013d565b92915050565b6000604082840312156100825760006000fd5b61008c60406100fb565b9050600061009c848285016100bc565b60008301525060206100b08482850161005a565b60208301525092915050565b6000813590506100cb81610157565b92915050565b6000604082840312156100e45760006000fd5b60006100f28482850161006f565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211171561011f5760006000fd5b8060405250919050565b6000819050919050565b6000819050919050565b61014681610129565b811415156101545760006000fd5b50565b61016081610133565b8114151561016e5760006000fd5b50565bfea365627a7a72315820749274eb7f6c01010d5322af4e1668b0a154409eb7968bd6cae5524c7ed669bb6c6578706572696d656e74616cf564736f6c634300050c0040`, 1429 `60806040523480156100115760006000fd5b50610017565b6101b5806100266000396000f3fe60806040523480156100115760006000fd5b50600436106100305760003560e01c8063db8ba08c1461003657610030565b60006000fd5b610050600480360361004b91908101906100d1565b610052565b005b5b5056610171565b6000813590506100698161013d565b92915050565b6000604082840312156100825760006000fd5b61008c60406100fb565b9050600061009c848285016100bc565b60008301525060206100b08482850161005a565b60208301525092915050565b6000813590506100cb81610157565b92915050565b6000604082840312156100e45760006000fd5b60006100f28482850161006f565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211171561011f5760006000fd5b8060405250919050565b6000819050919050565b6000819050919050565b61014681610129565b811415156101545760006000fd5b50565b61016081610133565b8114151561016e5760006000fd5b50565bfea365627a7a723158209bc28ee7ea97c131a13330d77ec73b4493b5c59c648352da81dd288b021192596c6578706572696d656e74616cf564736f6c634300050c0040`, 1430 `606c6026600b82828239805160001a6073141515601857fe5b30600052607381538281f350fe73000000000000000000000000000000000000000030146080604052600436106023575b60006000fdfea365627a7a72315820518f0110144f5b3de95697d05e456a064656890d08e6f9cff47f3be710cc46a36c6578706572696d656e74616cf564736f6c634300050c0040`, 1431 }, 1432 []string{ 1433 `[{"constant":true,"inputs":[{"components":[{"internalType":"uint256","name":"f1","type":"uint256"},{"internalType":"bytes32","name":"f2","type":"bytes32"}],"internalType":"struct ExternalLib.SharedStruct","name":"s","type":"tuple"}],"name":"foo","outputs":[],"payable":false,"stateMutability":"pure","type":"function"}]`, 1434 `[{"constant":true,"inputs":[{"components":[{"internalType":"uint256","name":"f1","type":"uint256"},{"internalType":"bytes32","name":"f2","type":"bytes32"}],"internalType":"struct ExternalLib.SharedStruct","name":"s","type":"tuple"}],"name":"bar","outputs":[],"payable":false,"stateMutability":"pure","type":"function"}]`, 1435 `[]`, 1436 }, 1437 ` 1438 "math/big" 1439 1440 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 1441 "github.com/neatio-net/neatio/utilities/crypto" 1442 "github.com/neatio-net/neatio/chain/core" 1443 `, 1444 ` 1445 key, _ := crypto.GenerateKey() 1446 addr := crypto.PubkeyToAddress(key.PublicKey) 1447 1448 // Deploy registrar contract 1449 sim := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}}, 10000000) 1450 defer sim.Close() 1451 1452 transactOpts := bind.NewKeyedTransactor(key) 1453 _, _, c1, err := DeployContractOne(transactOpts, sim) 1454 if err != nil { 1455 t.Fatal("Failed to deploy contract") 1456 } 1457 sim.Commit() 1458 err = c1.Foo(nil, ExternalLibSharedStruct{ 1459 F1: big.NewInt(100), 1460 F2: [32]byte{0x01, 0x02, 0x03}, 1461 }) 1462 if err != nil { 1463 t.Fatal("Failed to invoke function") 1464 } 1465 _, _, c2, err := DeployContractTwo(transactOpts, sim) 1466 if err != nil { 1467 t.Fatal("Failed to deploy contract") 1468 } 1469 sim.Commit() 1470 err = c2.Bar(nil, ExternalLibSharedStruct{ 1471 F1: big.NewInt(100), 1472 F2: [32]byte{0x01, 0x02, 0x03}, 1473 }) 1474 if err != nil { 1475 t.Fatal("Failed to invoke function") 1476 } 1477 `, 1478 nil, 1479 nil, 1480 nil, 1481 []string{"ContractOne", "ContractTwo", "ExternalLib"}, 1482 }, 1483 { 1484 `PureAndView`, 1485 `pragma solidity >=0.6.0; 1486 contract PureAndView { 1487 function PureFunc() public pure returns (uint) { 1488 return 42; 1489 } 1490 function ViewFunc() public view returns (uint) { 1491 return block.number; 1492 } 1493 } 1494 `, 1495 []string{`608060405234801561001057600080fd5b5060b68061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806376b5686a146037578063bb38c66c146053575b600080fd5b603d606f565b6040518082815260200191505060405180910390f35b60596077565b6040518082815260200191505060405180910390f35b600043905090565b6000602a90509056fea2646970667358221220d158c2ab7fdfce366a7998ec79ab84edd43b9815630bbaede2c760ea77f29f7f64736f6c63430006000033`}, 1496 []string{`[{"inputs": [],"name": "PureFunc","outputs": [{"internalType": "uint256","name": "","type": "uint256"}],"stateMutability": "pure","type": "function"},{"inputs": [],"name": "ViewFunc","outputs": [{"internalType": "uint256","name": "","type": "uint256"}],"stateMutability": "view","type": "function"}]`}, 1497 ` 1498 "math/big" 1499 1500 "github.com/neatio-net/neatio/chain/accounts/abi/bind" 1501 "github.com/neatio-net/neatio/chain/core" 1502 "github.com/neatio-net/neatio/utilities/crypto" 1503 `, 1504 ` 1505 // Generate a new random account and a funded simulator 1506 key, _ := crypto.GenerateKey() 1507 auth := bind.NewKeyedTransactor(key) 1508 1509 sim := backends.NewSimulatedBackend(core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}}, 10000000) 1510 defer sim.Close() 1511 1512 // Deploy a tester contract and execute a structured call on it 1513 _, _, pav, err := DeployPureAndView(auth, sim) 1514 if err != nil { 1515 t.Fatalf("Failed to deploy PureAndView contract: %v", err) 1516 } 1517 sim.Commit() 1518 1519 // This test the existence of the free retreiver call for view and pure functions 1520 if num, err := pav.PureFunc(nil); err != nil { 1521 t.Fatalf("Failed to call anonymous field retriever: %v", err) 1522 } else if num.Cmp(big.NewInt(42)) != 0 { 1523 t.Fatalf("Retrieved value mismatch: have %v, want %v", num, 42) 1524 } 1525 if num, err := pav.ViewFunc(nil); err != nil { 1526 t.Fatalf("Failed to call anonymous field retriever: %v", err) 1527 } else if num.Cmp(big.NewInt(1)) != 0 { 1528 t.Fatalf("Retrieved value mismatch: have %v, want %v", num, 1) 1529 } 1530 `, 1531 nil, 1532 nil, 1533 nil, 1534 nil, 1535 }, 1536 } 1537 1538 func TestGolangBindings(t *testing.T) { 1539 gocmd := runtime.GOROOT() + "/bin/go" 1540 if !common.FileExist(gocmd) { 1541 t.Skip("go sdk not found for testing") 1542 } 1543 ws, err := ioutil.TempDir("", "") 1544 if err != nil { 1545 t.Fatalf("failed to create temporary workspace: %v", err) 1546 } 1547 defer os.RemoveAll(ws) 1548 1549 pkg := filepath.Join(ws, "bindtest") 1550 if err = os.MkdirAll(pkg, 0700); err != nil { 1551 t.Fatalf("failed to create package: %v", err) 1552 } 1553 for i, tt := range bindTests { 1554 var types []string 1555 if tt.types != nil { 1556 types = tt.types 1557 } else { 1558 types = []string{tt.name} 1559 } 1560 bind, err := Bind(types, tt.abi, tt.bytecode, tt.fsigs, "bindtest", LangGo, tt.libs, tt.aliases) 1561 if err != nil { 1562 t.Fatalf("test %d: failed to generate binding: %v", i, err) 1563 } 1564 if err = ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+".go"), []byte(bind), 0600); err != nil { 1565 t.Fatalf("test %d: failed to write binding: %v", i, err) 1566 } 1567 code := fmt.Sprintf(` 1568 package bindtest 1569 1570 import ( 1571 "testing" 1572 %s 1573 ) 1574 1575 func Test%s(t *testing.T) { 1576 %s 1577 } 1578 `, tt.imports, tt.name, tt.tester) 1579 if err := ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+"_test.go"), []byte(code), 0600); err != nil { 1580 t.Fatalf("test %d: failed to write tests: %v", i, err) 1581 } 1582 } 1583 moder := exec.Command(gocmd, "mod", "init", "bindtest") 1584 moder.Dir = pkg 1585 if out, err := moder.CombinedOutput(); err != nil { 1586 t.Fatalf("failed to convert binding test to modules: %v\n%s", err, out) 1587 } 1588 pwd, _ := os.Getwd() 1589 replacer := exec.Command(gocmd, "mod", "edit", "-replace", "github.com/neatio-net/neatio="+filepath.Join(pwd, "..", "..", "..")) // Repo root 1590 replacer.Dir = pkg 1591 if out, err := replacer.CombinedOutput(); err != nil { 1592 t.Fatalf("failed to replace binding test dependency to current source tree: %v\n%s", err, out) 1593 } 1594 cmd := exec.Command(gocmd, "test", "-v", "-count", "1") 1595 cmd.Dir = pkg 1596 if out, err := cmd.CombinedOutput(); err != nil { 1597 t.Fatalf("failed to run binding test: %v\n%s", err, out) 1598 } 1599 } 1600 1601 func TestJavaBindings(t *testing.T) { 1602 var cases = []struct { 1603 name string 1604 contract string 1605 abi string 1606 bytecode string 1607 expected string 1608 }{ 1609 { 1610 "test", 1611 ` 1612 pragma experimental ABIEncoderV2; 1613 pragma solidity ^0.5.2; 1614 1615 contract test { 1616 function setAddress(address a) public returns(address){} 1617 function setAddressList(address[] memory a_l) public returns(address[] memory){} 1618 function setAddressArray(address[2] memory a_a) public returns(address[2] memory){} 1619 1620 function setUint8(uint8 u8) public returns(uint8){} 1621 function setUint16(uint16 u16) public returns(uint16){} 1622 function setUint32(uint32 u32) public returns(uint32){} 1623 function setUint64(uint64 u64) public returns(uint64){} 1624 function setUint256(uint256 u256) public returns(uint256){} 1625 function setUint256List(uint256[] memory u256_l) public returns(uint256[] memory){} 1626 function setUint256Array(uint256[2] memory u256_a) public returns(uint256[2] memory){} 1627 1628 function setInt8(int8 i8) public returns(int8){} 1629 function setInt16(int16 i16) public returns(int16){} 1630 function setInt32(int32 i32) public returns(int32){} 1631 function setInt64(int64 i64) public returns(int64){} 1632 function setInt256(int256 i256) public returns(int256){} 1633 function setInt256List(int256[] memory i256_l) public returns(int256[] memory){} 1634 function setInt256Array(int256[2] memory i256_a) public returns(int256[2] memory){} 1635 1636 function setBytes1(bytes1 b1) public returns(bytes1) {} 1637 function setBytes32(bytes32 b32) public returns(bytes32) {} 1638 function setBytes(bytes memory bs) public returns(bytes memory) {} 1639 function setBytesList(bytes[] memory bs_l) public returns(bytes[] memory) {} 1640 function setBytesArray(bytes[2] memory bs_a) public returns(bytes[2] memory) {} 1641 1642 function setString(string memory s) public returns(string memory) {} 1643 function setStringList(string[] memory s_l) public returns(string[] memory) {} 1644 function setStringArray(string[2] memory s_a) public returns(string[2] memory) {} 1645 1646 function setBool(bool b) public returns(bool) {} 1647 function setBoolList(bool[] memory b_l) public returns(bool[] memory) {} 1648 function setBoolArray(bool[2] memory b_a) public returns(bool[2] memory) {} 1649 }`, 1650 `[{"constant":false,"inputs":[{"name":"u16","type":"uint16"}],"name":"setUint16","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"b_a","type":"bool[2]"}],"name":"setBoolArray","outputs":[{"name":"","type":"bool[2]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a_a","type":"address[2]"}],"name":"setAddressArray","outputs":[{"name":"","type":"address[2]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"bs_l","type":"bytes[]"}],"name":"setBytesList","outputs":[{"name":"","type":"bytes[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"u8","type":"uint8"}],"name":"setUint8","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"u32","type":"uint32"}],"name":"setUint32","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"b","type":"bool"}],"name":"setBool","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i256_l","type":"int256[]"}],"name":"setInt256List","outputs":[{"name":"","type":"int256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"u256_a","type":"uint256[2]"}],"name":"setUint256Array","outputs":[{"name":"","type":"uint256[2]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"b_l","type":"bool[]"}],"name":"setBoolList","outputs":[{"name":"","type":"bool[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"bs_a","type":"bytes[2]"}],"name":"setBytesArray","outputs":[{"name":"","type":"bytes[2]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a_l","type":"address[]"}],"name":"setAddressList","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i256_a","type":"int256[2]"}],"name":"setInt256Array","outputs":[{"name":"","type":"int256[2]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"s_a","type":"string[2]"}],"name":"setStringArray","outputs":[{"name":"","type":"string[2]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"s","type":"string"}],"name":"setString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"u64","type":"uint64"}],"name":"setUint64","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i16","type":"int16"}],"name":"setInt16","outputs":[{"name":"","type":"int16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i8","type":"int8"}],"name":"setInt8","outputs":[{"name":"","type":"int8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"u256_l","type":"uint256[]"}],"name":"setUint256List","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i256","type":"int256"}],"name":"setInt256","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i32","type":"int32"}],"name":"setInt32","outputs":[{"name":"","type":"int32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"b32","type":"bytes32"}],"name":"setBytes32","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"s_l","type":"string[]"}],"name":"setStringList","outputs":[{"name":"","type":"string[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"u256","type":"uint256"}],"name":"setUint256","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"bs","type":"bytes"}],"name":"setBytes","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"address"}],"name":"setAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"i64","type":"int64"}],"name":"setInt64","outputs":[{"name":"","type":"int64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"b1","type":"bytes1"}],"name":"setBytes1","outputs":[{"name":"","type":"bytes1"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]`, 1651 `608060405234801561001057600080fd5b5061265a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e1576000357c0100000000000000000000000000000000000000000000000000000000900480637fcaf66611610116578063c2b12a73116100b4578063da359dc81161008e578063da359dc814610666578063e30081a014610696578063e673eb32146106c6578063fba1a1c3146106f6576101e1565b8063c2b12a73146105d6578063c577796114610606578063d2282dc514610636576101e1565b80639a19a953116100f05780639a19a95314610516578063a0709e1914610546578063a53b1c1e14610576578063b7d5df31146105a6576101e1565b80637fcaf66614610486578063822cba69146104b657806386114cea146104e6576101e1565b806322722302116101835780635119655d1161015d5780635119655d146103c65780635be6b37e146103f65780636aa482fc146104265780637173b69514610456576101e1565b806322722302146103365780632766a755146103665780634d5ee6da14610396576101e1565b806316c105e2116101bf57806316c105e2146102765780631774e646146102a65780631c9352e2146102d65780631e26fd3314610306576101e1565b80630477988a146101e6578063118a971814610216578063151f547114610246575b600080fd5b61020060048036036101fb9190810190611599565b610726565b60405161020d9190611f01565b60405180910390f35b610230600480360361022b919081019061118d565b61072d565b60405161023d9190611ca6565b60405180910390f35b610260600480360361025b9190810190611123565b61073a565b60405161026d9190611c69565b60405180910390f35b610290600480360361028b9190810190611238565b610747565b60405161029d9190611d05565b60405180910390f35b6102c060048036036102bb919081019061163d565b61074e565b6040516102cd9190611f6d565b60405180910390f35b6102f060048036036102eb91908101906115eb565b610755565b6040516102fd9190611f37565b60405180910390f35b610320600480360361031b91908101906113cf565b61075c565b60405161032d9190611de5565b60405180910390f35b610350600480360361034b91908101906112a2565b610763565b60405161035d9190611d42565b60405180910390f35b610380600480360361037b9190810190611365565b61076a565b60405161038d9190611da8565b60405180910390f35b6103b060048036036103ab91908101906111b6565b610777565b6040516103bd9190611cc1565b60405180910390f35b6103e060048036036103db91908101906111f7565b61077e565b6040516103ed9190611ce3565b60405180910390f35b610410600480360361040b919081019061114c565b61078b565b60405161041d9190611c84565b60405180910390f35b610440600480360361043b9190810190611279565b610792565b60405161044d9190611d27565b60405180910390f35b610470600480360361046b91908101906112e3565b61079f565b60405161047d9190611d64565b60405180910390f35b6104a0600480360361049b9190810190611558565b6107ac565b6040516104ad9190611edf565b60405180910390f35b6104d060048036036104cb9190810190611614565b6107b3565b6040516104dd9190611f52565b60405180910390f35b61050060048036036104fb919081019061148b565b6107ba565b60405161050d9190611e58565b60405180910390f35b610530600480360361052b919081019061152f565b6107c1565b60405161053d9190611ec4565b60405180910390f35b610560600480360361055b919081019061138e565b6107c8565b60405161056d9190611dc3565b60405180910390f35b610590600480360361058b91908101906114b4565b6107cf565b60405161059d9190611e73565b60405180910390f35b6105c060048036036105bb91908101906114dd565b6107d6565b6040516105cd9190611e8e565b60405180910390f35b6105f060048036036105eb9190810190611421565b6107dd565b6040516105fd9190611e1b565b60405180910390f35b610620600480360361061b9190810190611324565b6107e4565b60405161062d9190611d86565b60405180910390f35b610650600480360361064b91908101906115c2565b6107eb565b60405161065d9190611f1c565b60405180910390f35b610680600480360361067b919081019061144a565b6107f2565b60405161068d9190611e36565b60405180910390f35b6106b060048036036106ab91908101906110fa565b6107f9565b6040516106bd9190611c4e565b60405180910390f35b6106e060048036036106db9190810190611506565b610800565b6040516106ed9190611ea9565b60405180910390f35b610710600480360361070b91908101906113f8565b610807565b60405161071d9190611e00565b60405180910390f35b6000919050565b61073561080e565b919050565b610742610830565b919050565b6060919050565b6000919050565b6000919050565b6000919050565b6060919050565b610772610852565b919050565b6060919050565b610786610874565b919050565b6060919050565b61079a61089b565b919050565b6107a76108bd565b919050565b6060919050565b6000919050565b6000919050565b6000919050565b6060919050565b6000919050565b6000919050565b6000919050565b6060919050565b6000919050565b6060919050565b6000919050565b6000919050565b6000919050565b6040805190810160405280600290602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b60408051908101604052806002905b60608152602001906001900390816108835790505090565b6040805190810160405280600290602082028038833980820191505090505090565b60408051908101604052806002905b60608152602001906001900390816108cc5790505090565b60006108f082356124f2565b905092915050565b600082601f830112151561090b57600080fd5b600261091e61091982611fb5565b611f88565b9150818385602084028201111561093457600080fd5b60005b83811015610964578161094a88826108e4565b845260208401935060208301925050600181019050610937565b5050505092915050565b600082601f830112151561098157600080fd5b813561099461098f82611fd7565b611f88565b915081818352602084019350602081019050838560208402820111156109b957600080fd5b60005b838110156109e957816109cf88826108e4565b8452602084019350602083019250506001810190506109bc565b5050505092915050565b600082601f8301121515610a0657600080fd5b6002610a19610a1482611fff565b611f88565b91508183856020840282011115610a2f57600080fd5b60005b83811015610a5f5781610a458882610e9e565b845260208401935060208301925050600181019050610a32565b5050505092915050565b600082601f8301121515610a7c57600080fd5b8135610a8f610a8a82612021565b611f88565b91508181835260208401935060208101905083856020840282011115610ab457600080fd5b60005b83811015610ae45781610aca8882610e9e565b845260208401935060208301925050600181019050610ab7565b5050505092915050565b600082601f8301121515610b0157600080fd5b6002610b14610b0f82612049565b611f88565b9150818360005b83811015610b4b5781358601610b318882610eda565b845260208401935060208301925050600181019050610b1b565b5050505092915050565b600082601f8301121515610b6857600080fd5b8135610b7b610b768261206b565b611f88565b9150818183526020840193506020810190508360005b83811015610bc15781358601610ba78882610eda565b845260208401935060208301925050600181019050610b91565b5050505092915050565b600082601f8301121515610bde57600080fd5b6002610bf1610bec82612093565b611f88565b91508183856020840282011115610c0757600080fd5b60005b83811015610c375781610c1d8882610f9a565b845260208401935060208301925050600181019050610c0a565b5050505092915050565b600082601f8301121515610c5457600080fd5b8135610c67610c62826120b5565b611f88565b91508181835260208401935060208101905083856020840282011115610c8c57600080fd5b60005b83811015610cbc5781610ca28882610f9a565b845260208401935060208301925050600181019050610c8f565b5050505092915050565b600082601f8301121515610cd957600080fd5b6002610cec610ce7826120dd565b611f88565b9150818360005b83811015610d235781358601610d098882610fea565b845260208401935060208301925050600181019050610cf3565b5050505092915050565b600082601f8301121515610d4057600080fd5b8135610d53610d4e826120ff565b611f88565b9150818183526020840193506020810190508360005b83811015610d995781358601610d7f8882610fea565b845260208401935060208301925050600181019050610d69565b5050505092915050565b600082601f8301121515610db657600080fd5b6002610dc9610dc482612127565b611f88565b91508183856020840282011115610ddf57600080fd5b60005b83811015610e0f5781610df588826110aa565b845260208401935060208301925050600181019050610de2565b5050505092915050565b600082601f8301121515610e2c57600080fd5b8135610e3f610e3a82612149565b611f88565b91508181835260208401935060208101905083856020840282011115610e6457600080fd5b60005b83811015610e945781610e7a88826110aa565b845260208401935060208301925050600181019050610e67565b5050505092915050565b6000610eaa8235612504565b905092915050565b6000610ebe8235612510565b905092915050565b6000610ed2823561253c565b905092915050565b600082601f8301121515610eed57600080fd5b8135610f00610efb82612171565b611f88565b91508082526020830160208301858383011115610f1c57600080fd5b610f278382846125cd565b50505092915050565b600082601f8301121515610f4357600080fd5b8135610f56610f518261219d565b611f88565b91508082526020830160208301858383011115610f7257600080fd5b610f7d8382846125cd565b50505092915050565b6000610f928235612546565b905092915050565b6000610fa68235612553565b905092915050565b6000610fba823561255d565b905092915050565b6000610fce823561256a565b905092915050565b6000610fe28235612577565b905092915050565b600082601f8301121515610ffd57600080fd5b813561101061100b826121c9565b611f88565b9150808252602083016020830185838301111561102c57600080fd5b6110378382846125cd565b50505092915050565b600082601f830112151561105357600080fd5b8135611066611061826121f5565b611f88565b9150808252602083016020830185838301111561108257600080fd5b61108d8382846125cd565b50505092915050565b60006110a28235612584565b905092915050565b60006110b68235612592565b905092915050565b60006110ca823561259c565b905092915050565b60006110de82356125ac565b905092915050565b60006110f282356125c0565b905092915050565b60006020828403121561110c57600080fd5b600061111a848285016108e4565b91505092915050565b60006040828403121561113557600080fd5b6000611143848285016108f8565b91505092915050565b60006020828403121561115e57600080fd5b600082013567ffffffffffffffff81111561117857600080fd5b6111848482850161096e565b91505092915050565b60006040828403121561119f57600080fd5b60006111ad848285016109f3565b91505092915050565b6000602082840312156111c857600080fd5b600082013567ffffffffffffffff8111156111e257600080fd5b6111ee84828501610a69565b91505092915050565b60006020828403121561120957600080fd5b600082013567ffffffffffffffff81111561122357600080fd5b61122f84828501610aee565b91505092915050565b60006020828403121561124a57600080fd5b600082013567ffffffffffffffff81111561126457600080fd5b61127084828501610b55565b91505092915050565b60006040828403121561128b57600080fd5b600061129984828501610bcb565b91505092915050565b6000602082840312156112b457600080fd5b600082013567ffffffffffffffff8111156112ce57600080fd5b6112da84828501610c41565b91505092915050565b6000602082840312156112f557600080fd5b600082013567ffffffffffffffff81111561130f57600080fd5b61131b84828501610cc6565b91505092915050565b60006020828403121561133657600080fd5b600082013567ffffffffffffffff81111561135057600080fd5b61135c84828501610d2d565b91505092915050565b60006040828403121561137757600080fd5b600061138584828501610da3565b91505092915050565b6000602082840312156113a057600080fd5b600082013567ffffffffffffffff8111156113ba57600080fd5b6113c684828501610e19565b91505092915050565b6000602082840312156113e157600080fd5b60006113ef84828501610e9e565b91505092915050565b60006020828403121561140a57600080fd5b600061141884828501610eb2565b91505092915050565b60006020828403121561143357600080fd5b600061144184828501610ec6565b91505092915050565b60006020828403121561145c57600080fd5b600082013567ffffffffffffffff81111561147657600080fd5b61148284828501610f30565b91505092915050565b60006020828403121561149d57600080fd5b60006114ab84828501610f86565b91505092915050565b6000602082840312156114c657600080fd5b60006114d484828501610f9a565b91505092915050565b6000602082840312156114ef57600080fd5b60006114fd84828501610fae565b91505092915050565b60006020828403121561151857600080fd5b600061152684828501610fc2565b91505092915050565b60006020828403121561154157600080fd5b600061154f84828501610fd6565b91505092915050565b60006020828403121561156a57600080fd5b600082013567ffffffffffffffff81111561158457600080fd5b61159084828501611040565b91505092915050565b6000602082840312156115ab57600080fd5b60006115b984828501611096565b91505092915050565b6000602082840312156115d457600080fd5b60006115e2848285016110aa565b91505092915050565b6000602082840312156115fd57600080fd5b600061160b848285016110be565b91505092915050565b60006020828403121561162657600080fd5b6000611634848285016110d2565b91505092915050565b60006020828403121561164f57600080fd5b600061165d848285016110e6565b91505092915050565b61166f816123f7565b82525050565b61167e816122ab565b61168782612221565b60005b828110156116b95761169d858351611666565b6116a68261235b565b915060208501945060018101905061168a565b5050505050565b60006116cb826122b6565b8084526020840193506116dd8361222b565b60005b8281101561170f576116f3868351611666565b6116fc82612368565b91506020860195506001810190506116e0565b50849250505092915050565b611724816122c1565b61172d82612238565b60005b8281101561175f57611743858351611ab3565b61174c82612375565b9150602085019450600181019050611730565b5050505050565b6000611771826122cc565b80845260208401935061178383612242565b60005b828110156117b557611799868351611ab3565b6117a282612382565b9150602086019550600181019050611786565b50849250505092915050565b60006117cc826122d7565b836020820285016117dc8561224f565b60005b848110156118155783830388526117f7838351611b16565b92506118028261238f565b91506020880197506001810190506117df565b508196508694505050505092915050565b6000611831826122e2565b8084526020840193508360208202850161184a85612259565b60005b84811015611883578383038852611865838351611b16565b92506118708261239c565b915060208801975060018101905061184d565b508196508694505050505092915050565b61189d816122ed565b6118a682612266565b60005b828110156118d8576118bc858351611b5b565b6118c5826123a9565b91506020850194506001810190506118a9565b5050505050565b60006118ea826122f8565b8084526020840193506118fc83612270565b60005b8281101561192e57611912868351611b5b565b61191b826123b6565b91506020860195506001810190506118ff565b50849250505092915050565b600061194582612303565b836020820285016119558561227d565b60005b8481101561198e578383038852611970838351611bcd565b925061197b826123c3565b9150602088019750600181019050611958565b508196508694505050505092915050565b60006119aa8261230e565b808452602084019350836020820285016119c385612287565b60005b848110156119fc5783830388526119de838351611bcd565b92506119e9826123d0565b91506020880197506001810190506119c6565b508196508694505050505092915050565b611a1681612319565b611a1f82612294565b60005b82811015611a5157611a35858351611c12565b611a3e826123dd565b9150602085019450600181019050611a22565b5050505050565b6000611a6382612324565b808452602084019350611a758361229e565b60005b82811015611aa757611a8b868351611c12565b611a94826123ea565b9150602086019550600181019050611a78565b50849250505092915050565b611abc81612409565b82525050565b611acb81612415565b82525050565b611ada81612441565b82525050565b6000611aeb8261233a565b808452611aff8160208601602086016125dc565b611b088161260f565b602085010191505092915050565b6000611b218261232f565b808452611b358160208601602086016125dc565b611b3e8161260f565b602085010191505092915050565b611b558161244b565b82525050565b611b6481612458565b82525050565b611b7381612462565b82525050565b611b828161246f565b82525050565b611b918161247c565b82525050565b6000611ba282612350565b808452611bb68160208601602086016125dc565b611bbf8161260f565b602085010191505092915050565b6000611bd882612345565b808452611bec8160208601602086016125dc565b611bf58161260f565b602085010191505092915050565b611c0c81612489565b82525050565b611c1b816124b7565b82525050565b611c2a816124c1565b82525050565b611c39816124d1565b82525050565b611c48816124e5565b82525050565b6000602082019050611c636000830184611666565b92915050565b6000604082019050611c7e6000830184611675565b92915050565b60006020820190508181036000830152611c9e81846116c0565b905092915050565b6000604082019050611cbb600083018461171b565b92915050565b60006020820190508181036000830152611cdb8184611766565b905092915050565b60006020820190508181036000830152611cfd81846117c1565b905092915050565b60006020820190508181036000830152611d1f8184611826565b905092915050565b6000604082019050611d3c6000830184611894565b92915050565b60006020820190508181036000830152611d5c81846118df565b905092915050565b60006020820190508181036000830152611d7e818461193a565b905092915050565b60006020820190508181036000830152611da0818461199f565b905092915050565b6000604082019050611dbd6000830184611a0d565b92915050565b60006020820190508181036000830152611ddd8184611a58565b905092915050565b6000602082019050611dfa6000830184611ab3565b92915050565b6000602082019050611e156000830184611ac2565b92915050565b6000602082019050611e306000830184611ad1565b92915050565b60006020820190508181036000830152611e508184611ae0565b905092915050565b6000602082019050611e6d6000830184611b4c565b92915050565b6000602082019050611e886000830184611b5b565b92915050565b6000602082019050611ea36000830184611b6a565b92915050565b6000602082019050611ebe6000830184611b79565b92915050565b6000602082019050611ed96000830184611b88565b92915050565b60006020820190508181036000830152611ef98184611b97565b905092915050565b6000602082019050611f166000830184611c03565b92915050565b6000602082019050611f316000830184611c12565b92915050565b6000602082019050611f4c6000830184611c21565b92915050565b6000602082019050611f676000830184611c30565b92915050565b6000602082019050611f826000830184611c3f565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611fab57600080fd5b8060405250919050565b600067ffffffffffffffff821115611fcc57600080fd5b602082029050919050565b600067ffffffffffffffff821115611fee57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561201657600080fd5b602082029050919050565b600067ffffffffffffffff82111561203857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561206057600080fd5b602082029050919050565b600067ffffffffffffffff82111561208257600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120aa57600080fd5b602082029050919050565b600067ffffffffffffffff8211156120cc57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120f457600080fd5b602082029050919050565b600067ffffffffffffffff82111561211657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561213e57600080fd5b602082029050919050565b600067ffffffffffffffff82111561216057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561218857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156121b457600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156121e057600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561220c57600080fd5b601f19601f8301169050602081019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600061240282612497565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60008160010b9050919050565b6000819050919050565b60008160030b9050919050565b60008160070b9050919050565b60008160000b9050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006124fd82612497565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60008160010b9050919050565b6000819050919050565b60008160030b9050919050565b60008160070b9050919050565b60008160000b9050919050565b600061ffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125fa5780820151818401526020810190506125df565b83811115612609576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a723058206fe37171cf1b10ebd291cfdca61d67e7fc3c208795e999c833c42a14d86cf00d6c6578706572696d656e74616cf50037`, 1652 ` 1653 // This file is an automatically generated Java binding. Do not modify as any 1654 // change will likely be lost upon the next re-generation! 1655 1656 package bindtest; 1657 1658 import org.neatio.neatio.*; 1659 import java.util.*; 1660 1661 1662 1663 public class Test { 1664 // ABI is the input ABI used to generate the binding from. 1665 public final static String ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"u16\",\"type\":\"uint16\"}],\"name\":\"setUint16\",\"outputs\":[{\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"b_a\",\"type\":\"bool[2]\"}],\"name\":\"setBoolArray\",\"outputs\":[{\"name\":\"\",\"type\":\"bool[2]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"a_a\",\"type\":\"address[2]\"}],\"name\":\"setAddressArray\",\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"bs_l\",\"type\":\"bytes[]\"}],\"name\":\"setBytesList\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"u8\",\"type\":\"uint8\"}],\"name\":\"setUint8\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"u32\",\"type\":\"uint32\"}],\"name\":\"setUint32\",\"outputs\":[{\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"setBool\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"i256_l\",\"type\":\"int256[]\"}],\"name\":\"setInt256List\",\"outputs\":[{\"name\":\"\",\"type\":\"int256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"u256_a\",\"type\":\"uint256[2]\"}],\"name\":\"setUint256Array\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[2]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"b_l\",\"type\":\"bool[]\"}],\"name\":\"setBoolList\",\"outputs\":[{\"name\":\"\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"bs_a\",\"type\":\"bytes[2]\"}],\"name\":\"setBytesArray\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes[2]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"a_l\",\"type\":\"address[]\"}],\"name\":\"setAddressList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"i256_a\",\"type\":\"int256[2]\"}],\"name\":\"setInt256Array\",\"outputs\":[{\"name\":\"\",\"type\":\"int256[2]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"s_a\",\"type\":\"string[2]\"}],\"name\":\"setStringArray\",\"outputs\":[{\"name\":\"\",\"type\":\"string[2]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"s\",\"type\":\"string\"}],\"name\":\"setString\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"u64\",\"type\":\"uint64\"}],\"name\":\"setUint64\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"i16\",\"type\":\"int16\"}],\"name\":\"setInt16\",\"outputs\":[{\"name\":\"\",\"type\":\"int16\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"i8\",\"type\":\"int8\"}],\"name\":\"setInt8\",\"outputs\":[{\"name\":\"\",\"type\":\"int8\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"u256_l\",\"type\":\"uint256[]\"}],\"name\":\"setUint256List\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"i256\",\"type\":\"int256\"}],\"name\":\"setInt256\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"i32\",\"type\":\"int32\"}],\"name\":\"setInt32\",\"outputs\":[{\"name\":\"\",\"type\":\"int32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"b32\",\"type\":\"bytes32\"}],\"name\":\"setBytes32\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"s_l\",\"type\":\"string[]\"}],\"name\":\"setStringList\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"u256\",\"type\":\"uint256\"}],\"name\":\"setUint256\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"bs\",\"type\":\"bytes\"}],\"name\":\"setBytes\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"i64\",\"type\":\"int64\"}],\"name\":\"setInt64\",\"outputs\":[{\"name\":\"\",\"type\":\"int64\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"b1\",\"type\":\"bytes1\"}],\"name\":\"setBytes1\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes1\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"; 1666 1667 1668 // BYTECODE is the compiled bytecode used for deploying new contracts. 1669 public final static String BYTECODE = "0x608060405234801561001057600080fd5b5061265a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e1576000357c0100000000000000000000000000000000000000000000000000000000900480637fcaf66611610116578063c2b12a73116100b4578063da359dc81161008e578063da359dc814610666578063e30081a014610696578063e673eb32146106c6578063fba1a1c3146106f6576101e1565b8063c2b12a73146105d6578063c577796114610606578063d2282dc514610636576101e1565b80639a19a953116100f05780639a19a95314610516578063a0709e1914610546578063a53b1c1e14610576578063b7d5df31146105a6576101e1565b80637fcaf66614610486578063822cba69146104b657806386114cea146104e6576101e1565b806322722302116101835780635119655d1161015d5780635119655d146103c65780635be6b37e146103f65780636aa482fc146104265780637173b69514610456576101e1565b806322722302146103365780632766a755146103665780634d5ee6da14610396576101e1565b806316c105e2116101bf57806316c105e2146102765780631774e646146102a65780631c9352e2146102d65780631e26fd3314610306576101e1565b80630477988a146101e6578063118a971814610216578063151f547114610246575b600080fd5b61020060048036036101fb9190810190611599565b610726565b60405161020d9190611f01565b60405180910390f35b610230600480360361022b919081019061118d565b61072d565b60405161023d9190611ca6565b60405180910390f35b610260600480360361025b9190810190611123565b61073a565b60405161026d9190611c69565b60405180910390f35b610290600480360361028b9190810190611238565b610747565b60405161029d9190611d05565b60405180910390f35b6102c060048036036102bb919081019061163d565b61074e565b6040516102cd9190611f6d565b60405180910390f35b6102f060048036036102eb91908101906115eb565b610755565b6040516102fd9190611f37565b60405180910390f35b610320600480360361031b91908101906113cf565b61075c565b60405161032d9190611de5565b60405180910390f35b610350600480360361034b91908101906112a2565b610763565b60405161035d9190611d42565b60405180910390f35b610380600480360361037b9190810190611365565b61076a565b60405161038d9190611da8565b60405180910390f35b6103b060048036036103ab91908101906111b6565b610777565b6040516103bd9190611cc1565b60405180910390f35b6103e060048036036103db91908101906111f7565b61077e565b6040516103ed9190611ce3565b60405180910390f35b610410600480360361040b919081019061114c565b61078b565b60405161041d9190611c84565b60405180910390f35b610440600480360361043b9190810190611279565b610792565b60405161044d9190611d27565b60405180910390f35b610470600480360361046b91908101906112e3565b61079f565b60405161047d9190611d64565b60405180910390f35b6104a0600480360361049b9190810190611558565b6107ac565b6040516104ad9190611edf565b60405180910390f35b6104d060048036036104cb9190810190611614565b6107b3565b6040516104dd9190611f52565b60405180910390f35b61050060048036036104fb919081019061148b565b6107ba565b60405161050d9190611e58565b60405180910390f35b610530600480360361052b919081019061152f565b6107c1565b60405161053d9190611ec4565b60405180910390f35b610560600480360361055b919081019061138e565b6107c8565b60405161056d9190611dc3565b60405180910390f35b610590600480360361058b91908101906114b4565b6107cf565b60405161059d9190611e73565b60405180910390f35b6105c060048036036105bb91908101906114dd565b6107d6565b6040516105cd9190611e8e565b60405180910390f35b6105f060048036036105eb9190810190611421565b6107dd565b6040516105fd9190611e1b565b60405180910390f35b610620600480360361061b9190810190611324565b6107e4565b60405161062d9190611d86565b60405180910390f35b610650600480360361064b91908101906115c2565b6107eb565b60405161065d9190611f1c565b60405180910390f35b610680600480360361067b919081019061144a565b6107f2565b60405161068d9190611e36565b60405180910390f35b6106b060048036036106ab91908101906110fa565b6107f9565b6040516106bd9190611c4e565b60405180910390f35b6106e060048036036106db9190810190611506565b610800565b6040516106ed9190611ea9565b60405180910390f35b610710600480360361070b91908101906113f8565b610807565b60405161071d9190611e00565b60405180910390f35b6000919050565b61073561080e565b919050565b610742610830565b919050565b6060919050565b6000919050565b6000919050565b6000919050565b6060919050565b610772610852565b919050565b6060919050565b610786610874565b919050565b6060919050565b61079a61089b565b919050565b6107a76108bd565b919050565b6060919050565b6000919050565b6000919050565b6000919050565b6060919050565b6000919050565b6000919050565b6000919050565b6060919050565b6000919050565b6060919050565b6000919050565b6000919050565b6000919050565b6040805190810160405280600290602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b60408051908101604052806002905b60608152602001906001900390816108835790505090565b6040805190810160405280600290602082028038833980820191505090505090565b60408051908101604052806002905b60608152602001906001900390816108cc5790505090565b60006108f082356124f2565b905092915050565b600082601f830112151561090b57600080fd5b600261091e61091982611fb5565b611f88565b9150818385602084028201111561093457600080fd5b60005b83811015610964578161094a88826108e4565b845260208401935060208301925050600181019050610937565b5050505092915050565b600082601f830112151561098157600080fd5b813561099461098f82611fd7565b611f88565b915081818352602084019350602081019050838560208402820111156109b957600080fd5b60005b838110156109e957816109cf88826108e4565b8452602084019350602083019250506001810190506109bc565b5050505092915050565b600082601f8301121515610a0657600080fd5b6002610a19610a1482611fff565b611f88565b91508183856020840282011115610a2f57600080fd5b60005b83811015610a5f5781610a458882610e9e565b845260208401935060208301925050600181019050610a32565b5050505092915050565b600082601f8301121515610a7c57600080fd5b8135610a8f610a8a82612021565b611f88565b91508181835260208401935060208101905083856020840282011115610ab457600080fd5b60005b83811015610ae45781610aca8882610e9e565b845260208401935060208301925050600181019050610ab7565b5050505092915050565b600082601f8301121515610b0157600080fd5b6002610b14610b0f82612049565b611f88565b9150818360005b83811015610b4b5781358601610b318882610eda565b845260208401935060208301925050600181019050610b1b565b5050505092915050565b600082601f8301121515610b6857600080fd5b8135610b7b610b768261206b565b611f88565b9150818183526020840193506020810190508360005b83811015610bc15781358601610ba78882610eda565b845260208401935060208301925050600181019050610b91565b5050505092915050565b600082601f8301121515610bde57600080fd5b6002610bf1610bec82612093565b611f88565b91508183856020840282011115610c0757600080fd5b60005b83811015610c375781610c1d8882610f9a565b845260208401935060208301925050600181019050610c0a565b5050505092915050565b600082601f8301121515610c5457600080fd5b8135610c67610c62826120b5565b611f88565b91508181835260208401935060208101905083856020840282011115610c8c57600080fd5b60005b83811015610cbc5781610ca28882610f9a565b845260208401935060208301925050600181019050610c8f565b5050505092915050565b600082601f8301121515610cd957600080fd5b6002610cec610ce7826120dd565b611f88565b9150818360005b83811015610d235781358601610d098882610fea565b845260208401935060208301925050600181019050610cf3565b5050505092915050565b600082601f8301121515610d4057600080fd5b8135610d53610d4e826120ff565b611f88565b9150818183526020840193506020810190508360005b83811015610d995781358601610d7f8882610fea565b845260208401935060208301925050600181019050610d69565b5050505092915050565b600082601f8301121515610db657600080fd5b6002610dc9610dc482612127565b611f88565b91508183856020840282011115610ddf57600080fd5b60005b83811015610e0f5781610df588826110aa565b845260208401935060208301925050600181019050610de2565b5050505092915050565b600082601f8301121515610e2c57600080fd5b8135610e3f610e3a82612149565b611f88565b91508181835260208401935060208101905083856020840282011115610e6457600080fd5b60005b83811015610e945781610e7a88826110aa565b845260208401935060208301925050600181019050610e67565b5050505092915050565b6000610eaa8235612504565b905092915050565b6000610ebe8235612510565b905092915050565b6000610ed2823561253c565b905092915050565b600082601f8301121515610eed57600080fd5b8135610f00610efb82612171565b611f88565b91508082526020830160208301858383011115610f1c57600080fd5b610f278382846125cd565b50505092915050565b600082601f8301121515610f4357600080fd5b8135610f56610f518261219d565b611f88565b91508082526020830160208301858383011115610f7257600080fd5b610f7d8382846125cd565b50505092915050565b6000610f928235612546565b905092915050565b6000610fa68235612553565b905092915050565b6000610fba823561255d565b905092915050565b6000610fce823561256a565b905092915050565b6000610fe28235612577565b905092915050565b600082601f8301121515610ffd57600080fd5b813561101061100b826121c9565b611f88565b9150808252602083016020830185838301111561102c57600080fd5b6110378382846125cd565b50505092915050565b600082601f830112151561105357600080fd5b8135611066611061826121f5565b611f88565b9150808252602083016020830185838301111561108257600080fd5b61108d8382846125cd565b50505092915050565b60006110a28235612584565b905092915050565b60006110b68235612592565b905092915050565b60006110ca823561259c565b905092915050565b60006110de82356125ac565b905092915050565b60006110f282356125c0565b905092915050565b60006020828403121561110c57600080fd5b600061111a848285016108e4565b91505092915050565b60006040828403121561113557600080fd5b6000611143848285016108f8565b91505092915050565b60006020828403121561115e57600080fd5b600082013567ffffffffffffffff81111561117857600080fd5b6111848482850161096e565b91505092915050565b60006040828403121561119f57600080fd5b60006111ad848285016109f3565b91505092915050565b6000602082840312156111c857600080fd5b600082013567ffffffffffffffff8111156111e257600080fd5b6111ee84828501610a69565b91505092915050565b60006020828403121561120957600080fd5b600082013567ffffffffffffffff81111561122357600080fd5b61122f84828501610aee565b91505092915050565b60006020828403121561124a57600080fd5b600082013567ffffffffffffffff81111561126457600080fd5b61127084828501610b55565b91505092915050565b60006040828403121561128b57600080fd5b600061129984828501610bcb565b91505092915050565b6000602082840312156112b457600080fd5b600082013567ffffffffffffffff8111156112ce57600080fd5b6112da84828501610c41565b91505092915050565b6000602082840312156112f557600080fd5b600082013567ffffffffffffffff81111561130f57600080fd5b61131b84828501610cc6565b91505092915050565b60006020828403121561133657600080fd5b600082013567ffffffffffffffff81111561135057600080fd5b61135c84828501610d2d565b91505092915050565b60006040828403121561137757600080fd5b600061138584828501610da3565b91505092915050565b6000602082840312156113a057600080fd5b600082013567ffffffffffffffff8111156113ba57600080fd5b6113c684828501610e19565b91505092915050565b6000602082840312156113e157600080fd5b60006113ef84828501610e9e565b91505092915050565b60006020828403121561140a57600080fd5b600061141884828501610eb2565b91505092915050565b60006020828403121561143357600080fd5b600061144184828501610ec6565b91505092915050565b60006020828403121561145c57600080fd5b600082013567ffffffffffffffff81111561147657600080fd5b61148284828501610f30565b91505092915050565b60006020828403121561149d57600080fd5b60006114ab84828501610f86565b91505092915050565b6000602082840312156114c657600080fd5b60006114d484828501610f9a565b91505092915050565b6000602082840312156114ef57600080fd5b60006114fd84828501610fae565b91505092915050565b60006020828403121561151857600080fd5b600061152684828501610fc2565b91505092915050565b60006020828403121561154157600080fd5b600061154f84828501610fd6565b91505092915050565b60006020828403121561156a57600080fd5b600082013567ffffffffffffffff81111561158457600080fd5b61159084828501611040565b91505092915050565b6000602082840312156115ab57600080fd5b60006115b984828501611096565b91505092915050565b6000602082840312156115d457600080fd5b60006115e2848285016110aa565b91505092915050565b6000602082840312156115fd57600080fd5b600061160b848285016110be565b91505092915050565b60006020828403121561162657600080fd5b6000611634848285016110d2565b91505092915050565b60006020828403121561164f57600080fd5b600061165d848285016110e6565b91505092915050565b61166f816123f7565b82525050565b61167e816122ab565b61168782612221565b60005b828110156116b95761169d858351611666565b6116a68261235b565b915060208501945060018101905061168a565b5050505050565b60006116cb826122b6565b8084526020840193506116dd8361222b565b60005b8281101561170f576116f3868351611666565b6116fc82612368565b91506020860195506001810190506116e0565b50849250505092915050565b611724816122c1565b61172d82612238565b60005b8281101561175f57611743858351611ab3565b61174c82612375565b9150602085019450600181019050611730565b5050505050565b6000611771826122cc565b80845260208401935061178383612242565b60005b828110156117b557611799868351611ab3565b6117a282612382565b9150602086019550600181019050611786565b50849250505092915050565b60006117cc826122d7565b836020820285016117dc8561224f565b60005b848110156118155783830388526117f7838351611b16565b92506118028261238f565b91506020880197506001810190506117df565b508196508694505050505092915050565b6000611831826122e2565b8084526020840193508360208202850161184a85612259565b60005b84811015611883578383038852611865838351611b16565b92506118708261239c565b915060208801975060018101905061184d565b508196508694505050505092915050565b61189d816122ed565b6118a682612266565b60005b828110156118d8576118bc858351611b5b565b6118c5826123a9565b91506020850194506001810190506118a9565b5050505050565b60006118ea826122f8565b8084526020840193506118fc83612270565b60005b8281101561192e57611912868351611b5b565b61191b826123b6565b91506020860195506001810190506118ff565b50849250505092915050565b600061194582612303565b836020820285016119558561227d565b60005b8481101561198e578383038852611970838351611bcd565b925061197b826123c3565b9150602088019750600181019050611958565b508196508694505050505092915050565b60006119aa8261230e565b808452602084019350836020820285016119c385612287565b60005b848110156119fc5783830388526119de838351611bcd565b92506119e9826123d0565b91506020880197506001810190506119c6565b508196508694505050505092915050565b611a1681612319565b611a1f82612294565b60005b82811015611a5157611a35858351611c12565b611a3e826123dd565b9150602085019450600181019050611a22565b5050505050565b6000611a6382612324565b808452602084019350611a758361229e565b60005b82811015611aa757611a8b868351611c12565b611a94826123ea565b9150602086019550600181019050611a78565b50849250505092915050565b611abc81612409565b82525050565b611acb81612415565b82525050565b611ada81612441565b82525050565b6000611aeb8261233a565b808452611aff8160208601602086016125dc565b611b088161260f565b602085010191505092915050565b6000611b218261232f565b808452611b358160208601602086016125dc565b611b3e8161260f565b602085010191505092915050565b611b558161244b565b82525050565b611b6481612458565b82525050565b611b7381612462565b82525050565b611b828161246f565b82525050565b611b918161247c565b82525050565b6000611ba282612350565b808452611bb68160208601602086016125dc565b611bbf8161260f565b602085010191505092915050565b6000611bd882612345565b808452611bec8160208601602086016125dc565b611bf58161260f565b602085010191505092915050565b611c0c81612489565b82525050565b611c1b816124b7565b82525050565b611c2a816124c1565b82525050565b611c39816124d1565b82525050565b611c48816124e5565b82525050565b6000602082019050611c636000830184611666565b92915050565b6000604082019050611c7e6000830184611675565b92915050565b60006020820190508181036000830152611c9e81846116c0565b905092915050565b6000604082019050611cbb600083018461171b565b92915050565b60006020820190508181036000830152611cdb8184611766565b905092915050565b60006020820190508181036000830152611cfd81846117c1565b905092915050565b60006020820190508181036000830152611d1f8184611826565b905092915050565b6000604082019050611d3c6000830184611894565b92915050565b60006020820190508181036000830152611d5c81846118df565b905092915050565b60006020820190508181036000830152611d7e818461193a565b905092915050565b60006020820190508181036000830152611da0818461199f565b905092915050565b6000604082019050611dbd6000830184611a0d565b92915050565b60006020820190508181036000830152611ddd8184611a58565b905092915050565b6000602082019050611dfa6000830184611ab3565b92915050565b6000602082019050611e156000830184611ac2565b92915050565b6000602082019050611e306000830184611ad1565b92915050565b60006020820190508181036000830152611e508184611ae0565b905092915050565b6000602082019050611e6d6000830184611b4c565b92915050565b6000602082019050611e886000830184611b5b565b92915050565b6000602082019050611ea36000830184611b6a565b92915050565b6000602082019050611ebe6000830184611b79565b92915050565b6000602082019050611ed96000830184611b88565b92915050565b60006020820190508181036000830152611ef98184611b97565b905092915050565b6000602082019050611f166000830184611c03565b92915050565b6000602082019050611f316000830184611c12565b92915050565b6000602082019050611f4c6000830184611c21565b92915050565b6000602082019050611f676000830184611c30565b92915050565b6000602082019050611f826000830184611c3f565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611fab57600080fd5b8060405250919050565b600067ffffffffffffffff821115611fcc57600080fd5b602082029050919050565b600067ffffffffffffffff821115611fee57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561201657600080fd5b602082029050919050565b600067ffffffffffffffff82111561203857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561206057600080fd5b602082029050919050565b600067ffffffffffffffff82111561208257600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120aa57600080fd5b602082029050919050565b600067ffffffffffffffff8211156120cc57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120f457600080fd5b602082029050919050565b600067ffffffffffffffff82111561211657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561213e57600080fd5b602082029050919050565b600067ffffffffffffffff82111561216057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561218857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156121b457600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156121e057600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561220c57600080fd5b601f19601f8301169050602081019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600061240282612497565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60008160010b9050919050565b6000819050919050565b60008160030b9050919050565b60008160070b9050919050565b60008160000b9050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006124fd82612497565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60008160010b9050919050565b6000819050919050565b60008160030b9050919050565b60008160070b9050919050565b60008160000b9050919050565b600061ffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125fa5780820151818401526020810190506125df565b83811115612609576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a723058206fe37171cf1b10ebd291cfdca61d67e7fc3c208795e999c833c42a14d86cf00d6c6578706572696d656e74616cf50037"; 1670 1671 // deploy deploys a new Ethereum contract, binding an instance of Test to it. 1672 public static Test deploy(TransactOpts auth, EthereumClient client) throws Exception { 1673 Interfaces args = Geth.newInterfaces(0); 1674 String bytecode = BYTECODE; 1675 1676 1677 return new Test(Geth.deployContract(auth, ABI, Geth.decodeFromHex(bytecode), client, args)); 1678 } 1679 1680 // Internal constructor used by contract deployment. 1681 private Test(BoundContract deployment) { 1682 this.Address = deployment.getAddress(); 1683 this.Deployer = deployment.getDeployer(); 1684 this.Contract = deployment; 1685 } 1686 1687 1688 // Ethereum address where this contract is located at. 1689 public final Address Address; 1690 1691 // Ethereum transaction in which this contract was deployed (if known!). 1692 public final Transaction Deployer; 1693 1694 // Contract instance bound to a blockchain address. 1695 private final BoundContract Contract; 1696 1697 // Creates a new instance of Test, bound to a specific deployed contract. 1698 public Test(Address address, EthereumClient client) throws Exception { 1699 this(Geth.bindContract(address, ABI, client)); 1700 } 1701 1702 1703 1704 1705 // setAddress is a paid mutator transaction binding the contract method 0xe30081a0. 1706 // 1707 // Solidity: function setAddress(address a) returns(address) 1708 public Transaction setAddress(TransactOpts opts, Address a) throws Exception { 1709 Interfaces args = Geth.newInterfaces(1); 1710 Interface arg0 = Geth.newInterface();arg0.setAddress(a);args.set(0,arg0); 1711 1712 return this.Contract.transact(opts, "setAddress" , args); 1713 } 1714 1715 // setAddressArray is a paid mutator transaction binding the contract method 0x151f5471. 1716 // 1717 // Solidity: function setAddressArray(address[2] a_a) returns(address[2]) 1718 public Transaction setAddressArray(TransactOpts opts, Addresses a_a) throws Exception { 1719 Interfaces args = Geth.newInterfaces(1); 1720 Interface arg0 = Geth.newInterface();arg0.setAddresses(a_a);args.set(0,arg0); 1721 1722 return this.Contract.transact(opts, "setAddressArray" , args); 1723 } 1724 1725 // setAddressList is a paid mutator transaction binding the contract method 0x5be6b37e. 1726 // 1727 // Solidity: function setAddressList(address[] a_l) returns(address[]) 1728 public Transaction setAddressList(TransactOpts opts, Addresses a_l) throws Exception { 1729 Interfaces args = Geth.newInterfaces(1); 1730 Interface arg0 = Geth.newInterface();arg0.setAddresses(a_l);args.set(0,arg0); 1731 1732 return this.Contract.transact(opts, "setAddressList" , args); 1733 } 1734 1735 // setBool is a paid mutator transaction binding the contract method 0x1e26fd33. 1736 // 1737 // Solidity: function setBool(bool b) returns(bool) 1738 public Transaction setBool(TransactOpts opts, boolean b) throws Exception { 1739 Interfaces args = Geth.newInterfaces(1); 1740 Interface arg0 = Geth.newInterface();arg0.setBool(b);args.set(0,arg0); 1741 1742 return this.Contract.transact(opts, "setBool" , args); 1743 } 1744 1745 // setBoolArray is a paid mutator transaction binding the contract method 0x118a9718. 1746 // 1747 // Solidity: function setBoolArray(bool[2] b_a) returns(bool[2]) 1748 public Transaction setBoolArray(TransactOpts opts, Bools b_a) throws Exception { 1749 Interfaces args = Geth.newInterfaces(1); 1750 Interface arg0 = Geth.newInterface();arg0.setBools(b_a);args.set(0,arg0); 1751 1752 return this.Contract.transact(opts, "setBoolArray" , args); 1753 } 1754 1755 // setBoolList is a paid mutator transaction binding the contract method 0x4d5ee6da. 1756 // 1757 // Solidity: function setBoolList(bool[] b_l) returns(bool[]) 1758 public Transaction setBoolList(TransactOpts opts, Bools b_l) throws Exception { 1759 Interfaces args = Geth.newInterfaces(1); 1760 Interface arg0 = Geth.newInterface();arg0.setBools(b_l);args.set(0,arg0); 1761 1762 return this.Contract.transact(opts, "setBoolList" , args); 1763 } 1764 1765 // setBytes is a paid mutator transaction binding the contract method 0xda359dc8. 1766 // 1767 // Solidity: function setBytes(bytes bs) returns(bytes) 1768 public Transaction setBytes(TransactOpts opts, byte[] bs) throws Exception { 1769 Interfaces args = Geth.newInterfaces(1); 1770 Interface arg0 = Geth.newInterface();arg0.setBinary(bs);args.set(0,arg0); 1771 1772 return this.Contract.transact(opts, "setBytes" , args); 1773 } 1774 1775 // setBytes1 is a paid mutator transaction binding the contract method 0xfba1a1c3. 1776 // 1777 // Solidity: function setBytes1(bytes1 b1) returns(bytes1) 1778 public Transaction setBytes1(TransactOpts opts, byte[] b1) throws Exception { 1779 Interfaces args = Geth.newInterfaces(1); 1780 Interface arg0 = Geth.newInterface();arg0.setBinary(b1);args.set(0,arg0); 1781 1782 return this.Contract.transact(opts, "setBytes1" , args); 1783 } 1784 1785 // setBytes32 is a paid mutator transaction binding the contract method 0xc2b12a73. 1786 // 1787 // Solidity: function setBytes32(bytes32 b32) returns(bytes32) 1788 public Transaction setBytes32(TransactOpts opts, byte[] b32) throws Exception { 1789 Interfaces args = Geth.newInterfaces(1); 1790 Interface arg0 = Geth.newInterface();arg0.setBinary(b32);args.set(0,arg0); 1791 1792 return this.Contract.transact(opts, "setBytes32" , args); 1793 } 1794 1795 // setBytesArray is a paid mutator transaction binding the contract method 0x5119655d. 1796 // 1797 // Solidity: function setBytesArray(bytes[2] bs_a) returns(bytes[2]) 1798 public Transaction setBytesArray(TransactOpts opts, Binaries bs_a) throws Exception { 1799 Interfaces args = Geth.newInterfaces(1); 1800 Interface arg0 = Geth.newInterface();arg0.setBinaries(bs_a);args.set(0,arg0); 1801 1802 return this.Contract.transact(opts, "setBytesArray" , args); 1803 } 1804 1805 // setBytesList is a paid mutator transaction binding the contract method 0x16c105e2. 1806 // 1807 // Solidity: function setBytesList(bytes[] bs_l) returns(bytes[]) 1808 public Transaction setBytesList(TransactOpts opts, Binaries bs_l) throws Exception { 1809 Interfaces args = Geth.newInterfaces(1); 1810 Interface arg0 = Geth.newInterface();arg0.setBinaries(bs_l);args.set(0,arg0); 1811 1812 return this.Contract.transact(opts, "setBytesList" , args); 1813 } 1814 1815 // setInt16 is a paid mutator transaction binding the contract method 0x86114cea. 1816 // 1817 // Solidity: function setInt16(int16 i16) returns(int16) 1818 public Transaction setInt16(TransactOpts opts, short i16) throws Exception { 1819 Interfaces args = Geth.newInterfaces(1); 1820 Interface arg0 = Geth.newInterface();arg0.setInt16(i16);args.set(0,arg0); 1821 1822 return this.Contract.transact(opts, "setInt16" , args); 1823 } 1824 1825 // setInt256 is a paid mutator transaction binding the contract method 0xa53b1c1e. 1826 // 1827 // Solidity: function setInt256(int256 i256) returns(int256) 1828 public Transaction setInt256(TransactOpts opts, BigInt i256) throws Exception { 1829 Interfaces args = Geth.newInterfaces(1); 1830 Interface arg0 = Geth.newInterface();arg0.setBigInt(i256);args.set(0,arg0); 1831 1832 return this.Contract.transact(opts, "setInt256" , args); 1833 } 1834 1835 // setInt256Array is a paid mutator transaction binding the contract method 0x6aa482fc. 1836 // 1837 // Solidity: function setInt256Array(int256[2] i256_a) returns(int256[2]) 1838 public Transaction setInt256Array(TransactOpts opts, BigInts i256_a) throws Exception { 1839 Interfaces args = Geth.newInterfaces(1); 1840 Interface arg0 = Geth.newInterface();arg0.setBigInts(i256_a);args.set(0,arg0); 1841 1842 return this.Contract.transact(opts, "setInt256Array" , args); 1843 } 1844 1845 // setInt256List is a paid mutator transaction binding the contract method 0x22722302. 1846 // 1847 // Solidity: function setInt256List(int256[] i256_l) returns(int256[]) 1848 public Transaction setInt256List(TransactOpts opts, BigInts i256_l) throws Exception { 1849 Interfaces args = Geth.newInterfaces(1); 1850 Interface arg0 = Geth.newInterface();arg0.setBigInts(i256_l);args.set(0,arg0); 1851 1852 return this.Contract.transact(opts, "setInt256List" , args); 1853 } 1854 1855 // setInt32 is a paid mutator transaction binding the contract method 0xb7d5df31. 1856 // 1857 // Solidity: function setInt32(int32 i32) returns(int32) 1858 public Transaction setInt32(TransactOpts opts, int i32) throws Exception { 1859 Interfaces args = Geth.newInterfaces(1); 1860 Interface arg0 = Geth.newInterface();arg0.setInt32(i32);args.set(0,arg0); 1861 1862 return this.Contract.transact(opts, "setInt32" , args); 1863 } 1864 1865 // setInt64 is a paid mutator transaction binding the contract method 0xe673eb32. 1866 // 1867 // Solidity: function setInt64(int64 i64) returns(int64) 1868 public Transaction setInt64(TransactOpts opts, long i64) throws Exception { 1869 Interfaces args = Geth.newInterfaces(1); 1870 Interface arg0 = Geth.newInterface();arg0.setInt64(i64);args.set(0,arg0); 1871 1872 return this.Contract.transact(opts, "setInt64" , args); 1873 } 1874 1875 // setInt8 is a paid mutator transaction binding the contract method 0x9a19a953. 1876 // 1877 // Solidity: function setInt8(int8 i8) returns(int8) 1878 public Transaction setInt8(TransactOpts opts, byte i8) throws Exception { 1879 Interfaces args = Geth.newInterfaces(1); 1880 Interface arg0 = Geth.newInterface();arg0.setInt8(i8);args.set(0,arg0); 1881 1882 return this.Contract.transact(opts, "setInt8" , args); 1883 } 1884 1885 // setString is a paid mutator transaction binding the contract method 0x7fcaf666. 1886 // 1887 // Solidity: function setString(string s) returns(string) 1888 public Transaction setString(TransactOpts opts, String s) throws Exception { 1889 Interfaces args = Geth.newInterfaces(1); 1890 Interface arg0 = Geth.newInterface();arg0.setString(s);args.set(0,arg0); 1891 1892 return this.Contract.transact(opts, "setString" , args); 1893 } 1894 1895 // setStringArray is a paid mutator transaction binding the contract method 0x7173b695. 1896 // 1897 // Solidity: function setStringArray(string[2] s_a) returns(string[2]) 1898 public Transaction setStringArray(TransactOpts opts, Strings s_a) throws Exception { 1899 Interfaces args = Geth.newInterfaces(1); 1900 Interface arg0 = Geth.newInterface();arg0.setStrings(s_a);args.set(0,arg0); 1901 1902 return this.Contract.transact(opts, "setStringArray" , args); 1903 } 1904 1905 // setStringList is a paid mutator transaction binding the contract method 0xc5777961. 1906 // 1907 // Solidity: function setStringList(string[] s_l) returns(string[]) 1908 public Transaction setStringList(TransactOpts opts, Strings s_l) throws Exception { 1909 Interfaces args = Geth.newInterfaces(1); 1910 Interface arg0 = Geth.newInterface();arg0.setStrings(s_l);args.set(0,arg0); 1911 1912 return this.Contract.transact(opts, "setStringList" , args); 1913 } 1914 1915 // setUint16 is a paid mutator transaction binding the contract method 0x0477988a. 1916 // 1917 // Solidity: function setUint16(uint16 u16) returns(uint16) 1918 public Transaction setUint16(TransactOpts opts, BigInt u16) throws Exception { 1919 Interfaces args = Geth.newInterfaces(1); 1920 Interface arg0 = Geth.newInterface();arg0.setUint16(u16);args.set(0,arg0); 1921 1922 return this.Contract.transact(opts, "setUint16" , args); 1923 } 1924 1925 // setUint256 is a paid mutator transaction binding the contract method 0xd2282dc5. 1926 // 1927 // Solidity: function setUint256(uint256 u256) returns(uint256) 1928 public Transaction setUint256(TransactOpts opts, BigInt u256) throws Exception { 1929 Interfaces args = Geth.newInterfaces(1); 1930 Interface arg0 = Geth.newInterface();arg0.setBigInt(u256);args.set(0,arg0); 1931 1932 return this.Contract.transact(opts, "setUint256" , args); 1933 } 1934 1935 // setUint256Array is a paid mutator transaction binding the contract method 0x2766a755. 1936 // 1937 // Solidity: function setUint256Array(uint256[2] u256_a) returns(uint256[2]) 1938 public Transaction setUint256Array(TransactOpts opts, BigInts u256_a) throws Exception { 1939 Interfaces args = Geth.newInterfaces(1); 1940 Interface arg0 = Geth.newInterface();arg0.setBigInts(u256_a);args.set(0,arg0); 1941 1942 return this.Contract.transact(opts, "setUint256Array" , args); 1943 } 1944 1945 // setUint256List is a paid mutator transaction binding the contract method 0xa0709e19. 1946 // 1947 // Solidity: function setUint256List(uint256[] u256_l) returns(uint256[]) 1948 public Transaction setUint256List(TransactOpts opts, BigInts u256_l) throws Exception { 1949 Interfaces args = Geth.newInterfaces(1); 1950 Interface arg0 = Geth.newInterface();arg0.setBigInts(u256_l);args.set(0,arg0); 1951 1952 return this.Contract.transact(opts, "setUint256List" , args); 1953 } 1954 1955 // setUint32 is a paid mutator transaction binding the contract method 0x1c9352e2. 1956 // 1957 // Solidity: function setUint32(uint32 u32) returns(uint32) 1958 public Transaction setUint32(TransactOpts opts, BigInt u32) throws Exception { 1959 Interfaces args = Geth.newInterfaces(1); 1960 Interface arg0 = Geth.newInterface();arg0.setUint32(u32);args.set(0,arg0); 1961 1962 return this.Contract.transact(opts, "setUint32" , args); 1963 } 1964 1965 // setUint64 is a paid mutator transaction binding the contract method 0x822cba69. 1966 // 1967 // Solidity: function setUint64(uint64 u64) returns(uint64) 1968 public Transaction setUint64(TransactOpts opts, BigInt u64) throws Exception { 1969 Interfaces args = Geth.newInterfaces(1); 1970 Interface arg0 = Geth.newInterface();arg0.setUint64(u64);args.set(0,arg0); 1971 1972 return this.Contract.transact(opts, "setUint64" , args); 1973 } 1974 1975 // setUint8 is a paid mutator transaction binding the contract method 0x1774e646. 1976 // 1977 // Solidity: function setUint8(uint8 u8) returns(uint8) 1978 public Transaction setUint8(TransactOpts opts, BigInt u8) throws Exception { 1979 Interfaces args = Geth.newInterfaces(1); 1980 Interface arg0 = Geth.newInterface();arg0.setUint8(u8);args.set(0,arg0); 1981 1982 return this.Contract.transact(opts, "setUint8" , args); 1983 } 1984 1985 } 1986 1987 `, 1988 }, 1989 } 1990 for i, c := range cases { 1991 binding, err := Bind([]string{c.name}, []string{c.abi}, []string{c.bytecode}, nil, "bindtest", LangJava, nil, nil) 1992 if err != nil { 1993 t.Fatalf("test %d: failed to generate binding: %v", i, err) 1994 } 1995 if binding != c.expected { 1996 t.Fatalf("test %d: generated binding mismatch, has %s, want %s", i, binding, c.expected) 1997 } 1998 } 1999 }