Skip to content

Commit caf54ae

Browse files
Merge pull request #347 from BaldyAsh/tests-local-fix
Update local Tests and refactoring
2 parents 35ce6fd + 3af8feb commit caf54ae

33 files changed

+1199
-1097
lines changed

Sources/web3swift/Web3/Web3.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,10 @@ public struct Web3 {
7676
return web3(provider: infura)
7777
}
7878

79+
/// Initialized Web3 instance bound to Infura's kovan provider.
80+
public static func InfuraKovanWeb3(accessToken: String? = nil) -> web3 {
81+
let infura = InfuraProvider(Networks.Kovan, accessToken: accessToken)!
82+
return web3(provider: infura)
83+
}
84+
7985
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
// web3swift
2+
//
3+
// Created by Alex Vlasov.
4+
// Copyright © 2018 Alex Vlasov. All rights reserved.
5+
//
6+
7+
import XCTest
8+
9+
@testable import web3swift
10+
11+
// MARK: Works only with network connection
12+
class web3swift_ENS_Tests: XCTestCase {
13+
14+
func testDomainNormalization() throws {
15+
let normalizedString = NameHash.normalizeDomainName("example.ens")
16+
print(normalizedString!)
17+
}
18+
19+
func testNameHash() throws {
20+
XCTAssertEqual(NameHash.nameHash(""), Data.fromHex("0x0000000000000000000000000000000000000000000000000000000000000000"))
21+
XCTAssertEqual(NameHash.nameHash("eth"), Data.fromHex("0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae"))
22+
XCTAssertEqual(NameHash.nameHash("foo.eth"), Data.fromHex("0xde9b09fd7c5f901e23a3f19fecc54828e9c848539801e86591bd9801b019f84f"))
23+
}
24+
25+
func testResolverAddress() throws {
26+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
27+
let ens = ENS(web3: web)
28+
let domain = "somename.eth"
29+
let address = try ens?.registry.getResolver(forDomain: domain).resolverContractAddress
30+
XCTAssertEqual(address?.address.lowercased(), "0x5ffc014343cd971b7eb70732021e26c35b744cc4")
31+
}
32+
33+
func testResolver() throws {
34+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
35+
let ens = ENS(web3: web)
36+
let domain = "somename.eth"
37+
let address = try ens?.getAddress(forNode: domain)
38+
XCTAssertEqual(address?.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac")
39+
}
40+
41+
func testSupportsInterface() throws {
42+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
43+
let ens = ENS(web3: web)
44+
let domain = "somename.eth"
45+
let resolver = try ens?.registry.getResolver(forDomain: domain)
46+
let isAddrSupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.addr.hash())
47+
let isNameSupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.name.hash())
48+
let isABIsupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.ABI.hash())
49+
let isPubkeySupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.pubkey.hash())
50+
XCTAssertEqual(isAddrSupports, true)
51+
XCTAssertEqual(isNameSupports, true)
52+
XCTAssertEqual(isABIsupports, true)
53+
XCTAssertEqual(isPubkeySupports, true)
54+
}
55+
56+
func testABI() throws {
57+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
58+
let ens = ENS(web3: web)
59+
let domain = "somename.eth"
60+
let resolver = try ens?.registry.getResolver(forDomain: domain)
61+
if let isABIsupported = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.ABI.hash()),
62+
isABIsupported {
63+
let res = try resolver?.getContractABI(forNode: domain, contentType: .zlibCompressedJSON)
64+
XCTAssert(res?.0 == 0)
65+
XCTAssert(res?.1.count == 0)
66+
} else {
67+
XCTFail()
68+
}
69+
}
70+
71+
func testOwner() throws {
72+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
73+
let ens = ENS(web3: web)
74+
let domain = "somename.eth"
75+
let owner = try ens?.registry.getOwner(node: domain)
76+
XCTAssertEqual("0xc67247454e720328714c4e17bec7640572657bee", owner?.address.lowercased())
77+
}
78+
79+
func testTTL() throws {
80+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
81+
let ens = ENS(web3: web)
82+
let domain = "somename.eth"
83+
let ttl = try ens?.registry.getTTL(node: domain)
84+
print(ttl!.description)
85+
}
86+
87+
func testGetAddress() throws {
88+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
89+
let ens = ENS(web3: web)
90+
let domain = "somename.eth"
91+
let resolver = try ens?.registry.getResolver(forDomain: domain)
92+
let address = try resolver?.getAddress(forNode: domain)
93+
XCTAssertEqual(address?.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac")
94+
}
95+
96+
func testGetPubkey() throws {
97+
let web = web3(provider: InfuraProvider(Networks.Mainnet)!)
98+
let ens = ENS(web3: web)
99+
let domain = "somename.eth"
100+
let resolver = try ens?.registry.getResolver(forDomain: domain)
101+
let pubkey = try resolver?.getPublicKey(forNode: domain)
102+
XCTAssert(pubkey?.x == "0x0000000000000000000000000000000000000000000000000000000000000000")
103+
XCTAssert(pubkey?.y == "0x0000000000000000000000000000000000000000000000000000000000000000")
104+
}
105+
}

Tests/web3swiftTests/web3swift_ST20AndSecurityToken_Tests.swift renamed to Tests/web3swiftTests/infura_tests/web3swift_ST20AndSecurityToken_Tests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
//
88
import XCTest
99
import BigInt
10-
//import EthereumAddress
1110

1211
@testable import web3swift
1312

13+
// MARK: Works only with network connection
1414
class web3swift_ST20AndSecurityToken_Tests: XCTestCase {
1515

16-
func testERC20TokenCreation() {
17-
let web3 = try! Web3.new(URL(string: "https://kovan.infura.io")!)
16+
func testERC20TokenCreation() throws {
17+
let web3 = Web3.InfuraKovanWeb3()
1818
let w3sTokenAddress = EthereumAddress("0x2dD33957C90880bE4Ee9fd5F703110BDA2E579EC")!
1919
let st20token = ST20.init(web3: web3, provider: web3.provider, address: w3sTokenAddress)
2020
st20token.readProperties()
@@ -24,7 +24,7 @@ class web3swift_ST20AndSecurityToken_Tests: XCTestCase {
2424
}
2525

2626
func testST20tokenBalanceAndAllowance() throws {
27-
let web3 = try! Web3.new(URL(string: "https://kovan.infura.io")!)
27+
let web3 = Web3.InfuraKovanWeb3()
2828
let w3sTokenAddress = EthereumAddress("0x2dD33957C90880bE4Ee9fd5F703110BDA2E579EC")!
2929
let st20token = ST20.init(web3: web3, provider: web3.provider, address: w3sTokenAddress)
3030
let userAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")!
@@ -35,7 +35,7 @@ class web3swift_ST20AndSecurityToken_Tests: XCTestCase {
3535
}
3636

3737
func testSecurityTokenInvestors() throws {
38-
let web3 = try! Web3.new(URL(string: "https://kovan.infura.io")!)
38+
let web3 = Web3.InfuraKovanWeb3()
3939
let w3sTokenAddress = EthereumAddress("0x2dD33957C90880bE4Ee9fd5F703110BDA2E579EC")!
4040
let stoken = SecurityToken.init(web3: web3, provider: web3.provider, address: w3sTokenAddress)
4141
let investorsCount = try stoken.investorCount()
@@ -44,7 +44,7 @@ class web3swift_ST20AndSecurityToken_Tests: XCTestCase {
4444
}
4545

4646
func testSecurityTokenGranularity() throws {
47-
let web3 = try! Web3.new(URL(string: "https://kovan.infura.io")!)
47+
let web3 = Web3.InfuraKovanWeb3()
4848
let w3sTokenAddress = EthereumAddress("0x2dD33957C90880bE4Ee9fd5F703110BDA2E579EC")!
4949
let stoken = SecurityToken.init(web3: web3, provider: web3.provider, address: w3sTokenAddress)
5050
let granularity = try stoken.getGranularity()

Tests/web3swiftTests/web3swift_Websockets_Tests.swift renamed to Tests/web3swiftTests/infura_tests/web3swift_Websockets_Tests.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class SpyDelegate: Web3SocketDelegate {
4040
}
4141
}
4242

43+
// MARK: Works only with network connection
4344
class web3swift_websocket_Tests: XCTestCase {
4445

4546
let spyDelegate = SpyDelegate()
@@ -75,7 +76,7 @@ class web3swift_websocket_Tests: XCTestCase {
7576
}
7677
self.socketProvider = socketProvider
7778
spyDelegate.asyncExpectation = expectation(description: "Delegate called")
78-
try! self.socketProvider!.subscribeOnLogs(addresses: [EthereumAddress("0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359")!], topics: nil)
79+
try! self.socketProvider!.subscribeOnLogs(addresses: [EthereumAddress("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48")!], topics: nil)
7980
// DispatchQueue.main.asyncAfter(deadline: .now()+5) { [unowned self] in
8081
// try! self.socketProvider!.subscribeOnNewPendingTransactions()
8182
// }
@@ -123,7 +124,7 @@ class web3swift_websocket_Tests: XCTestCase {
123124
}
124125
self.socketProvider = socketProvider
125126
spyDelegate.asyncExpectation = expectation(description: "Delegate called")
126-
try! self.socketProvider?.setFilterAndGetLogs(method: .newFilter, address: EthereumAddress("0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359")!, fromBlock: .earliest, toBlock: .latest, topics: nil)
127+
try! self.socketProvider?.setFilterAndGetLogs(method: .newFilter, address: EthereumAddress("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48")!, fromBlock: .earliest, toBlock: .latest, topics: nil)
127128
// DispatchQueue.main.asyncAfter(deadline: .now()+5) { [unowned self] in
128129
// try! self.socketProvider!.subscribeOnNewPendingTransactions()
129130
// }
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// web3swift
2+
//
3+
// Created by Alex Vlasov.
4+
// Copyright © 2018 Alex Vlasov. All rights reserved.
5+
//
6+
7+
import XCTest
8+
9+
@testable import web3swift
10+
11+
// MARK: Works only with network connection
12+
class web3swift_infura_Tests: XCTestCase {
13+
14+
func testGetBalance() throws {
15+
do {
16+
let web3 = Web3.InfuraMainnetWeb3()
17+
let address = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")!
18+
let balance = try web3.eth.getBalance(address: address)
19+
let balString = Web3.Utils.formatToEthereumUnits(balance, toUnits: .eth, decimals: 3)
20+
print(balString!)
21+
} catch {
22+
XCTFail()
23+
}
24+
}
25+
26+
func testGetBlockByHash() throws {
27+
do {
28+
let web3 = Web3.InfuraMainnetWeb3()
29+
let result = try web3.eth.getBlockByHash("0x6d05ba24da6b7a1af22dc6cc2a1fe42f58b2a5ea4c406b19c8cf672ed8ec0695", fullTransactions: true)
30+
print(result)
31+
} catch {
32+
XCTFail()
33+
}
34+
}
35+
36+
func testGetBlockByNumber1() throws {
37+
let web3 = Web3.InfuraMainnetWeb3()
38+
let result = try web3.eth.getBlockByNumber("latest", fullTransactions: true)
39+
print(result)
40+
}
41+
42+
func testGetBlockByNumber2() throws {
43+
let web3 = Web3.InfuraMainnetWeb3()
44+
let result = try web3.eth.getBlockByNumber(UInt64(5184323), fullTransactions: true)
45+
print(result)
46+
let transactions = result.transactions
47+
for transaction in transactions {
48+
switch transaction {
49+
case .transaction(let tx):
50+
print(String(describing: tx))
51+
default:
52+
break
53+
}
54+
}
55+
}
56+
57+
func testGetBlockByNumber3() throws {
58+
do {
59+
let web3 = Web3.InfuraMainnetWeb3()
60+
let _ = try web3.eth.getBlockByNumber(UInt64(1000000000), fullTransactions: true)
61+
XCTFail()
62+
} catch {
63+
64+
}
65+
}
66+
67+
func testGasPrice() throws {
68+
let web3 = Web3.InfuraMainnetWeb3()
69+
let response = try web3.eth.getGasPrice()
70+
print(response)
71+
}
72+
73+
func testGetIndexedEventsPromise() throws {
74+
let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]"
75+
let web3 = Web3.InfuraMainnetWeb3()
76+
let contract = web3.contract(jsonString, at: nil, abiVersion: 2)
77+
var filter = EventFilter()
78+
filter.fromBlock = .blockNumber(UInt64(5200120))
79+
filter.toBlock = .blockNumber(UInt64(5200120))
80+
filter.addresses = [EthereumAddress("0x53066cddbc0099eb6c96785d9b3df2aaeede5da3")!]
81+
filter.parameterFilters = [([EthereumAddress("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5")!] as [EventFilterable]), (nil as [EventFilterable]?)]
82+
let eventParserResult = try contract!.getIndexedEventsPromise(eventName: "Transfer", filter: filter, joinWithReceipts: true).wait()
83+
print(eventParserResult)
84+
XCTAssert(eventParserResult.count == 2)
85+
XCTAssert(eventParserResult[0].transactionReceipt != nil)
86+
XCTAssert(eventParserResult[0].eventLog != nil)
87+
}
88+
89+
func testEventParsingBlockByNumberPromise() throws {
90+
let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]"
91+
let web3 = Web3.InfuraMainnetWeb3()
92+
let contract = web3.contract(jsonString, at: nil, abiVersion: 2)
93+
var filter = EventFilter()
94+
filter.addresses = [EthereumAddress("0x53066cddbc0099eb6c96785d9b3df2aaeede5da3")!]
95+
filter.parameterFilters = [([EthereumAddress("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5")!] as [EventFilterable]), ([EthereumAddress("0xd5395c132c791a7f46fa8fc27f0ab6bacd824484")!] as [EventFilterable])]
96+
guard let eventParser = contract?.createEventParser("Transfer", filter: filter) else {return XCTFail()}
97+
let present = try eventParser.parseBlockByNumberPromise(UInt64(5200120)).wait()
98+
print(present)
99+
XCTAssert(present.count == 1)
100+
}
101+
102+
func testUserCaseEventParsing() throws {
103+
let contractAddress = EthereumAddress("0x7ff546aaccd379d2d1f241e1d29cdd61d4d50778")
104+
let jsonString = "[{\"constant\":false,\"inputs\":[{\"name\":\"_id\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_id\",\"type\":\"string\"},{\"indexed\":true,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"}]"
105+
let web3 = Web3.InfuraRinkebyWeb3()
106+
let contract = web3.contract(jsonString, at: contractAddress, abiVersion: 2)
107+
guard let eventParser = contract?.createEventParser("Deposit", filter: nil) else {return XCTFail()}
108+
let pres = try eventParser.parseBlockByNumber(UInt64(2138657))
109+
XCTAssert(pres.count == 1)
110+
}
111+
}

0 commit comments

Comments
 (0)