Skip to content

Commit 5827e9f

Browse files
committed
fix: encoding tests
1 parent 11f824f commit 5827e9f

File tree

10 files changed

+324
-4
lines changed

10 files changed

+324
-4
lines changed

Sources/SolanaSwift/APIClient/APIClient+Extension.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public extension SolanaAPIClient {
168168
isUnregisteredAsocciatedToken = true
169169

170170
// if associated token account has been registered
171-
if PublicKey.isSPLTokenOrToken2022ProgramId(info?.owner),
171+
if PublicKey.isSPLTokenProgram(info?.owner),
172172
info?.data != nil
173173
{
174174
isUnregisteredAsocciatedToken = false

Sources/SolanaSwift/BlockchainClient/BlockchainClient+Extensions.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public extension SolanaBlockchainClient {
7171
do {
7272
let info: BufferInfo<SPLTokenAccountState>? = try await apiClient
7373
.getAccountInfo(account: associatedAddress.base58EncodedString)
74-
if PublicKey.isSPLTokenOrToken2022ProgramId(info?.owner),
74+
if PublicKey.isSPLTokenProgram(info?.owner),
7575
info?.data.owner == owner
7676
{
7777
isAssociatedTokenAddressRegistered = true

Sources/SolanaSwift/Extensions/PublicKey/PublicKey+Validation.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Foundation
22

33
public extension PublicKey {
4-
static func isSPLTokenOrToken2022ProgramId(_ programId: String?) -> Bool {
4+
static func isSPLTokenProgram(_ programId: String?) -> Bool {
55
programId == TokenProgram.id.base58EncodedString ||
66
programId == Token2022Program.id.base58EncodedString
77
}

Sources/SolanaSwift/Programs/TokenPrograms/Token2022Program/ExtensionReader/AnyToken2022ExtensionState.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ public struct AnyToken2022ExtensionState: BorshCodable, Codable, Equatable, Hash
6262
}
6363
}
6464

65+
init(
66+
type: Token2022ExtensionType,
67+
state: any Token2022ExtensionState
68+
) {
69+
self.type = type
70+
self.state = state
71+
}
72+
6573
public func serialize(to data: inout Data) throws {
6674
try type.rawValue.serialize(to: &data)
6775
try state.serialize(to: &data)

Sources/SolanaSwift/Programs/TokenPrograms/Token2022Program/ExtensionReader/Extensions/InterestBearingConfigExtensionState.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,20 @@ public struct InterestBearingConfigExtensionState: Token2022ExtensionState {
2626
try lastUpdateTimestamp.serialize(to: &data)
2727
try currentRate.serialize(to: &data)
2828
}
29+
30+
init(
31+
length: UInt16,
32+
rateAuthority: PublicKey,
33+
initializationTimestamp: Int64,
34+
preUpdateAverageRate: Int16,
35+
lastUpdateTimestamp: Int64,
36+
currentRate: Int16
37+
) {
38+
self.length = length
39+
self.rateAuthority = rateAuthority
40+
self.initializationTimestamp = initializationTimestamp
41+
self.preUpdateAverageRate = preUpdateAverageRate
42+
self.lastUpdateTimestamp = lastUpdateTimestamp
43+
self.currentRate = currentRate
44+
}
2945
}

Sources/SolanaSwift/Programs/TokenPrograms/Token2022Program/ExtensionReader/Extensions/TransferFeeConfigExtensionState.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ public struct TransferFeeConfigExtensionState: Token2022ExtensionState {
1717
try maximumFee.serialize(to: &data)
1818
try transferFeeBasisPoints.serialize(to: &data)
1919
}
20+
21+
init(
22+
epoch: UInt64,
23+
maximumFee: UInt64,
24+
transferFeeBasisPoints: UInt16
25+
) {
26+
self.epoch = epoch
27+
self.maximumFee = maximumFee
28+
self.transferFeeBasisPoints = transferFeeBasisPoints
29+
}
2030
}
2131

2232
public let length: UInt16
@@ -49,4 +59,20 @@ public struct TransferFeeConfigExtensionState: Token2022ExtensionState {
4959
try olderTransferFee.serialize(to: &data)
5060
try newerTransferFee.serialize(to: &data)
5161
}
62+
63+
init(
64+
length: UInt16,
65+
transferFeeConfigAuthority: PublicKey,
66+
withdrawWithHeldAuthority: PublicKey,
67+
withheldAmount: UInt64,
68+
olderTransferFee: TransferFeeConfigExtensionState.TransferFee,
69+
newerTransferFee: TransferFeeConfigExtensionState.TransferFee
70+
) {
71+
self.length = length
72+
self.transferFeeConfigAuthority = transferFeeConfigAuthority
73+
self.withdrawWithHeldAuthority = withdrawWithHeldAuthority
74+
self.withheldAmount = withheldAmount
75+
self.olderTransferFee = olderTransferFee
76+
self.newerTransferFee = newerTransferFee
77+
}
5278
}

Sources/SolanaSwift/Programs/TokenPrograms/Token2022Program/Token2022AccountState.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public struct Token2022AccountState: TokenAccountState {
5959
extension Token2022AccountState: BorshCodable {
6060
public func serialize(to writer: inout Data) throws {
6161
try serializeCommonProperties(to: &writer)
62+
try UInt8(0).serialize(to: &writer)
6263
for ext in extensions {
6364
try ext.serialize(to: &writer)
6465
}

Sources/SolanaSwift/Programs/TokenPrograms/Token2022Program/Token2022MintState.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ extension Token2022MintState: BorshCodable {
4747

4848
public func serialize(to writer: inout Data) throws {
4949
try serializeCommonProperties(to: &writer)
50+
try Data(repeating: UInt8(0), count: 83).serialize(to: &writer)
51+
try UInt8(1).serialize(to: &writer)
5052
for ext in extensions {
5153
try ext.serialize(to: &writer)
5254
}

Tests/SolanaSwiftUnitTests/Other/BufferLayout/BufferLayoutTests.swift renamed to Tests/SolanaSwiftUnitTests/Other/BufferLayout/BufferLayoutDecodingTests.swift

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import SolanaSwift
22
import XCTest
33

4-
class BufferLayoutTests: XCTestCase {
4+
class BufferLayoutDecodingTests: XCTestCase {
55
// MARK: - Raw data
66

77
func testDecodingRawData() throws {
@@ -177,7 +177,31 @@ class BufferLayoutTests: XCTestCase {
177177
var binaryReader = BinaryReader(bytes: data.bytes)
178178
let state = try Token2022MintState(from: &binaryReader)
179179

180+
XCTAssertEqual(state.mintAuthorityOption, 0)
181+
XCTAssertEqual(state.mintAuthority?.base58EncodedString, "LPF354oHyPWL7BoMRySPQLwfvUyqPBWpwC4R7atptrD")
182+
XCTAssertEqual(state.isInitialized, true)
183+
XCTAssertEqual(state.freezeAuthorityOption, 0)
184+
XCTAssertEqual(state.decimals, 5)
185+
XCTAssertEqual(state.supply, 49_999_926_084_701)
180186
XCTAssertEqual(state.extensions.count, 1)
187+
188+
// Assertions for the extension state
189+
let extensionState = state.getParsedExtension(ofType: TransferFeeConfigExtensionState.self)!
190+
XCTAssertEqual(extensionState.withheldAmount, 2_531_431_991)
191+
XCTAssertEqual(
192+
extensionState.transferFeeConfigAuthority.base58EncodedString,
193+
"11111111111111111111111111111111"
194+
)
195+
XCTAssertEqual(
196+
extensionState.withdrawWithHeldAuthority.base58EncodedString,
197+
"LPF354oHyPWL7BoMRySPQLwfvUyqPBWpwC4R7atptrD"
198+
)
199+
XCTAssertEqual(extensionState.olderTransferFee.maximumFee, 50_000_000_000_000)
200+
XCTAssertEqual(extensionState.olderTransferFee.epoch, 530)
201+
XCTAssertEqual(extensionState.olderTransferFee.transferFeeBasisPoints, 300)
202+
XCTAssertEqual(extensionState.newerTransferFee.transferFeeBasisPoints, 300)
203+
XCTAssertEqual(extensionState.newerTransferFee.maximumFee, 50_000_000_000_000)
204+
XCTAssertEqual(extensionState.newerTransferFee.epoch, 530)
181205
}
182206

183207
func testDecodingToken2022MintState2() throws {

0 commit comments

Comments
 (0)