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