77//
88
99import XCTest
10+ @testable import Core
1011@testable import web3swift
1112
1213class EthereumContractTest : LocalTestCase {
1314 private static let eventsOnlyABI = " [{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" operation \" , \" type \" : \" uint256 \" },{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" contractAddress \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" }], \" name \" : \" ContractCreated \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" bytes32 \" , \" name \" : \" dataKey \" , \" type \" : \" bytes32 \" }], \" name \" : \" DataChanged \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" operation \" , \" type \" : \" uint256 \" },{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" to \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" },{ \" indexed \" :false, \" internalType \" : \" bytes4 \" , \" name \" : \" selector \" , \" type \" : \" bytes4 \" }], \" name \" : \" Executed \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" previousOwner \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" newOwner \" , \" type \" : \" address \" }], \" name \" : \" OwnershipTransferred \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" from \" , \" type \" : \" address \" },{ \" indexed \" :false, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" },{ \" indexed \" :true, \" internalType \" : \" bytes32 \" , \" name \" : \" typeId \" , \" type \" : \" bytes32 \" },{ \" indexed \" :true, \" internalType \" : \" bytes \" , \" name \" : \" returnedValue \" , \" type \" : \" bytes \" },{ \" indexed \" :false, \" internalType \" : \" bytes \" , \" name \" : \" receivedData \" , \" type \" : \" bytes \" }], \" name \" : \" UniversalReceiver \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" sender \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" }], \" name \" : \" ValueReceived \" , \" type \" : \" event \" }] "
1415
1516 private static let overloadedFunctionsABI = " [{ \" inputs \" :[], \" stateMutability \" : \" nonpayable \" , \" type \" : \" constructor \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" operation \" , \" type \" : \" uint256 \" },{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" contractAddress \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" }], \" name \" : \" ContractCreated \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" bytes32 \" , \" name \" : \" dataKey \" , \" type \" : \" bytes32 \" }], \" name \" : \" DataChanged \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" operation \" , \" type \" : \" uint256 \" },{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" to \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" },{ \" indexed \" :false, \" internalType \" : \" bytes4 \" , \" name \" : \" selector \" , \" type \" : \" bytes4 \" }], \" name \" : \" Executed \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" previousOwner \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" newOwner \" , \" type \" : \" address \" }], \" name \" : \" OwnershipTransferred \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" from \" , \" type \" : \" address \" },{ \" indexed \" :false, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" },{ \" indexed \" :true, \" internalType \" : \" bytes32 \" , \" name \" : \" typeId \" , \" type \" : \" bytes32 \" },{ \" indexed \" :true, \" internalType \" : \" bytes \" , \" name \" : \" returnedValue \" , \" type \" : \" bytes \" },{ \" indexed \" :false, \" internalType \" : \" bytes \" , \" name \" : \" receivedData \" , \" type \" : \" bytes \" }], \" name \" : \" UniversalReceiver \" , \" type \" : \" event \" },{ \" anonymous \" :false, \" inputs \" :[{ \" indexed \" :true, \" internalType \" : \" address \" , \" name \" : \" sender \" , \" type \" : \" address \" },{ \" indexed \" :true, \" internalType \" : \" uint256 \" , \" name \" : \" value \" , \" type \" : \" uint256 \" }], \" name \" : \" ValueReceived \" , \" type \" : \" event \" },{ \" stateMutability \" : \" payable \" , \" type \" : \" fallback \" },{ \" inputs \" :[{ \" internalType \" : \" bytes32[] \" , \" name \" : \" dataKeys \" , \" type \" : \" bytes32[] \" }], \" name \" : \" getData \" , \" outputs \" :[{ \" internalType \" : \" bytes[] \" , \" name \" : \" dataValues \" , \" type \" : \" bytes[] \" }], \" stateMutability \" : \" view \" , \" type \" : \" function \" },{ \" inputs \" :[{ \" internalType \" : \" bytes32 \" , \" name \" : \" dataKey \" , \" type \" : \" bytes32 \" }], \" name \" : \" getData \" , \" outputs \" :[{ \" internalType \" : \" bytes \" , \" name \" : \" dataValue \" , \" type \" : \" bytes \" }], \" stateMutability \" : \" view \" , \" type \" : \" function \" },{ \" inputs \" :[], \" name \" : \" noInputFunction \" , \" outputs \" :[], \" stateMutability \" : \" nonpayable \" , \" type \" : \" function \" },{ \" inputs \" :[{ \" internalType \" : \" bytes32[] \" , \" name \" : \" dataKeys \" , \" type \" : \" bytes32[] \" },{ \" internalType \" : \" bytes[] \" , \" name \" : \" dataValues \" , \" type \" : \" bytes[] \" }], \" name \" : \" setData \" , \" outputs \" :[], \" stateMutability \" : \" nonpayable \" , \" type \" : \" function \" },{ \" inputs \" :[{ \" internalType \" : \" bytes32 \" , \" name \" : \" dataKey \" , \" type \" : \" bytes32 \" },{ \" internalType \" : \" bytes \" , \" name \" : \" dataValue \" , \" type \" : \" bytes \" }], \" name \" : \" setData \" , \" outputs \" :[], \" stateMutability \" : \" nonpayable \" , \" type \" : \" function \" }] "
1617
17- func test_decodeEvents( ) throws {
18- let contract = ganache. contract ( EthereumContractTest . eventsOnlyABI) !
18+ func test_decodeEvents( ) async throws {
19+ let web3 = try ! await Web3 . new ( LocalTestCase . url)
20+ let contract = web3. contract ( EthereumContractTest . eventsOnlyABI) !
1921
2022 XCTAssertTrue ( contract. contract. allEvents. count == 6 )
2123 XCTAssertNotNil ( contract. contract. events [ " ContractCreated " ] )
@@ -26,8 +28,9 @@ class EthereumContractTest: LocalTestCase {
2628 XCTAssertNotNil ( contract. contract. events [ " ValueReceived " ] )
2729 }
2830
29- func test_decodedAllFunctions( ) throws {
30- let contract = ganache. contract ( EthereumContractTest . overloadedFunctionsABI) !
31+ func test_decodedAllFunctions( ) async throws {
32+ let web3 = try ! await Web3 . new ( LocalTestCase . url)
33+ let contract = web3. contract ( EthereumContractTest . overloadedFunctionsABI) !
3134
3235 XCTAssertTrue ( contract. contract. allMethods. count == 5 )
3336
@@ -48,17 +51,19 @@ class EthereumContractTest: LocalTestCase {
4851 XCTAssertTrue ( contract. contract. methods [ getFuncSignature ( " noInputFunction() " ) ] ? . count == 1 )
4952 }
5053
51- func test_encodeMethodBasedOnNameWithParameters_mustFail( ) throws {
52- let contract = ganache. contract ( EthereumContractTest . overloadedFunctionsABI) !
54+ func test_encodeMethodBasedOnNameWithParameters_mustFail( ) async throws {
55+ let web3 = try ! await Web3 . new ( LocalTestCase . url)
56+ let contract = web3. contract ( EthereumContractTest . overloadedFunctionsABI) !
5357
5458 /// Encoding method that expects parameters but we are not giving any.
5559 /// Result must be `nil`.
5660 XCTAssertNil ( contract. method ( " setData(bytes32,bytes) " ) )
5761 XCTAssertNil ( contract. method ( getFuncSignature ( " setData(bytes32,bytes) " ) ) )
5862 }
5963
60- func test_encodeMethodBasedOnNameWithParameters( ) throws {
61- let contract = ganache. contract ( EthereumContractTest . overloadedFunctionsABI,
64+ func test_encodeMethodBasedOnNameWithParameters( ) async throws {
65+ let web3 = try ! await Web3 . new ( LocalTestCase . url)
66+ let contract = web3. contract ( EthereumContractTest . overloadedFunctionsABI,
6267 at: EthereumAddress ( " 0x6394b37Cf80A7358b38068f0CA4760ad49983a1B " ) !) !
6368 let parameters : [ AnyObject ] = [
6469 [ Data . randomBytes ( length: 32 ) !,
@@ -81,8 +86,9 @@ class EthereumContractTest: LocalTestCase {
8186 testDecoding ( getFuncSignature ( functionNameWithParameters) )
8287 }
8388
84- func test_encodeMethodBasedOnHexSignature( ) throws {
85- let contract = ganache. contract ( EthereumContractTest . overloadedFunctionsABI,
89+ func test_encodeMethodBasedOnHexSignature( ) async throws {
90+ let web3 = try ! await Web3 . new ( LocalTestCase . url)
91+ let contract = web3. contract ( EthereumContractTest . overloadedFunctionsABI,
8692 at: EthereumAddress ( " 0x6394b37Cf80A7358b38068f0CA4760ad49983a1B " ) !) !
8793 let parameters : [ AnyObject ] = [ Data . randomBytes ( length: 32 ) !, Data . randomBytes ( length: 32 ) !] as [ AnyObject ]
8894 let functionSignature = getFuncSignature ( " setData(bytes32,bytes) " )
0 commit comments