Files
Anton Stavnichiy 378413dded Update zcash endpoint selector and backup flag.
* Fix tests. Move tests to develop scheme
2026-06-08 15:36:13 +06:00

69 lines
4.4 KiB
Swift

import BigInt
import EvmKit
import HsExtensions
@testable import Unstoppable
@testable import WalletCore
import XCTest
final class EntryPointV06Tests: XCTestCase {
func testEncodeGetNonce() throws {
let sender = try EvmKit.Address(hex: "0x1234567890abcdef1234567890abcdef12345678")
let data = EntryPointV06.encodeGetNonce(sender: sender)
XCTAssertEqual(
data.hs.hex,
"35567e1a0000000000000000000000001234567890abcdef1234567890abcdef123456780000000000000000000000000000000000000000000000000000000000000000"
)
}
func testDecodeGetNonce() throws {
let encoded = "000000000000000000000000000000000000000000000000000000000000002a".hs.hexData!
XCTAssertEqual(try EntryPointV06.decodeGetNonce(encoded), 42)
}
func testEncodeGetUserOpHash() {
let data = EntryPointV06.encodeGetUserOpHash(sampleUserOperation())
XCTAssertEqual(
data.hs.hex,
"a619353100000000000000000000000000000000000000000000000000000000000000200000000000000000000000001234567890abcdef1234567890abcdef12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000c35000000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000005208000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a9059cbb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
)
}
func testDecodeGetUserOpHash() throws {
let encoded = "edfd7c6c5670154a4999ece69853a5f87368b6f475ce228964ba8f98c5005c8e".hs.hexData!
XCTAssertEqual(try EntryPointV06.decodeGetUserOpHash(encoded), encoded)
}
func testEncodeHandleOps() {
let beneficiary = try! EvmKit.Address(hex: "0x9999999999999999999999999999999999999999")
let data = EntryPointV06.encodeHandleOps(ops: [sampleUserOperation()], beneficiary: beneficiary)
XCTAssertEqual(
data.hs.hex,
"1fad948c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000009999999999999999999999999999999999999999000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000001234567890abcdef1234567890abcdef12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000c35000000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000005208000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a9059cbb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
)
}
private func sampleUserOperation() -> UserOperation {
let sender = try! EvmKit.Address(hex: "0x1234567890abcdef1234567890abcdef12345678")
return UserOperation(
sender: sender,
nonce: 0,
initCode: Data(),
callData: Data([0xA9, 0x05, 0x9C, 0xBB]),
callGasLimit: 50000,
verificationGasLimit: 100_000,
preVerificationGas: 21000,
maxFeePerGas: 1_000_000_000,
maxPriorityFeePerGas: 1_000_000_000,
paymasterAndData: Data(),
signature: Data()
)
}
}