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