@@ -200,68 +200,96 @@ final class BufferLayoutEncodingTests: XCTestCase {
200200 )
201201 }
202202
203- // func testEncodingToken2022MintState2() throws {
204- // // Mint FZYEgCWzzedxcmxYvGXSkMrj7TaA3bXoaEv6XMnwtLKh
205- // let state = Token2022MintState(
206- // mintAuthorityOption: 1,
207- // mintAuthority: "FZYEgCWzzedxcmxYvGXSkMrj7TaA3bXoaEv6XMnwtLKh",
208- // supply: 1_000_000_000_000,
209- // decimals: 10,
210- // isInitialized: true,
211- // freezeAuthorityOption: 10,
212- // freezeAuthority: nil,
213- // extensions: []
214- // )
215- //
216- // // Add TransferFeeConfigExtensionState
217- // let transferConfig = TransferFeeConfigExtensionState(
218- // length: 108,
219- // transferFeeConfigAuthority: "11111111111111111111111111111111",
220- // withdrawWithHeldAuthority: "11111111111111111111111111111111",
221- // withheldAmount: 1_299_782_865_324_245_038,
222- // olderTransferFee: .init(
223- // epoch: 489,
224- // maximumFee: 8_888_888_888_888_889_344,
225- // transferFeeBasisPoints: 300
226- // ),
227- // newerTransferFee: .init(
228- // epoch: 489,
229- // maximumFee: 8_888_888_888_888_889_344,
230- // transferFeeBasisPoints: 300
231- // )
232- // )
233- // state.extensions.append(TokenExtension(type: 1, state: transferConfig))
234- //
235- // // Add InterestBearingConfigExtensionState
236- // let interestBearingConfig = InterestBearingConfigExtensionState(
237- // length: 52,
238- // rateAuthority: "2a9H7uNfUxt7YdS5yH3ZEijdPqpeBtyq7JPtVyi6XKtk",
239- // initializationTimestamp: 1_692_005_389,
240- // preUpdateAverageRate: 0,
241- // lastUpdateTimestamp: 1_692_005_389,
242- // currentRate: 0
243- // )
244- // state.extensions.append(TokenExtension(type: 2, state: interestBearingConfig))
245- //
246- // // Serialize the state
247- // var data = Data()
248- // try state.serialize(to: &data)
249- //
250- // // Base64 encode the serialized data and compare with the expected value
251- // XCTAssertEqual(
252- // data.base64EncodedString(),
253- // "AAAAABdZNqd8UPqRoeBHXdhoEwzZNLf6UnDQ1UDsr4oXimfhquOLA1BVIXECAQAAAAAXWTanfFD6kaHgR13YaBMM2TS3+lJw0NVA7K+KF4pn4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALoDKJKHBCRLpAQAAAAAAAACQI15ZrVt7LAHpAQAAAAAAAACQI15ZrVt7LAEKADQAF1k2p3xQ+pGh4Edd2GgTDNk0t/pScNDVQOyviheKZ+EN9NlkAAAAAAAADfTZZAAAAAAAAAYAAQAB"
254- // )
255- // }
256-
257- //
258- // func testEncodingToken2022AccountState() throws {
259- // let string =
260- // "c8d675Tc8/enuGEbVogbaWoW6iY9JFkJIswLnf/gvCXDAcw04n4gWtOj5P12Rb7RAxY9RRwFQOwFWCWPS3OnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcAAAA="
261- // let data = Data(base64Encoded: string)!
262- // var binaryReader = BinaryReader(bytes: data.bytes)
263- // let state = try Token2022AccountState(from: &binaryReader)
264- //
265- // XCTAssertEqual(state.extensions.count, 1)
266- // }
203+ func testEncodingToken2022MintState2( ) throws {
204+ // Mint FZYEgCWzzedxcmxYvGXSkMrj7TaA3bXoaEv6XMnwtLKh
205+ var state = Token2022MintState (
206+ mintAuthorityOption: 0 ,
207+ mintAuthority: " 2a9H7uNfUxt7YdS5yH3ZEijdPqpeBtyq7JPtVyi6XKtk " ,
208+ supply: 8_151_890_602_662_552_490 ,
209+ decimals: 2 ,
210+ isInitialized: true ,
211+ freezeAuthorityOption: 0 ,
212+ freezeAuthority: " 2a9H7uNfUxt7YdS5yH3ZEijdPqpeBtyq7JPtVyi6XKtk " ,
213+ extensions: [ ]
214+ )
215+
216+ // Add TransferFeeConfigExtensionState
217+ let transferConfig = TransferFeeConfigExtensionState (
218+ length: 108 ,
219+ transferFeeConfigAuthority: " 11111111111111111111111111111111 " ,
220+ withdrawWithHeldAuthority: " 11111111111111111111111111111111 " ,
221+ withheldAmount: 1_299_782_865_324_245_038 ,
222+ olderTransferFee: . init(
223+ epoch: 489 ,
224+ maximumFee: 8_888_888_888_888_889_344 ,
225+ transferFeeBasisPoints: 300
226+ ) ,
227+ newerTransferFee: . init(
228+ epoch: 489 ,
229+ maximumFee: 8_888_888_888_888_889_344 ,
230+ transferFeeBasisPoints: 300
231+ )
232+ )
233+
234+ // Add InterestBearingConfigExtensionState
235+ let interestBearingConfig = InterestBearingConfigExtensionState (
236+ length: 52 ,
237+ rateAuthority: " 2a9H7uNfUxt7YdS5yH3ZEijdPqpeBtyq7JPtVyi6XKtk " ,
238+ initializationTimestamp: 1_692_005_389 ,
239+ preUpdateAverageRate: 0 ,
240+ lastUpdateTimestamp: 1_692_005_389 ,
241+ currentRate: 0
242+ )
243+
244+ state. extensions = [
245+ . init( type: . transferFeeConfig, state: transferConfig) ,
246+ . init( type: . interestBearingConfig, state: interestBearingConfig) ,
247+ . init( type: . defaultAccountState, state: VecU8 ( length: UInt16 ( 1 ) , data: Data ( [ 1 ] ) ) ) ,
248+ ]
249+
250+ // Serialize the state
251+ var data = Data ( )
252+ try state. serialize ( to: & data)
253+
254+ // Base64 encode the serialized data and compare with the expected value
255+ XCTAssertEqual (
256+ data. base64EncodedString ( ) ,
257+ " AAAAABdZNqd8UPqRoeBHXdhoEwzZNLf6UnDQ1UDsr4oXimfhquOLA1BVIXECAQAAAAAXWTanfFD6kaHgR13YaBMM2TS3+lJw0NVA7K+KF4pn4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALoDKJKHBCRLpAQAAAAAAAACQI15ZrVt7LAHpAQAAAAAAAACQI15ZrVt7LAEKADQAF1k2p3xQ+pGh4Edd2GgTDNk0t/pScNDVQOyviheKZ+EN9NlkAAAAAAAADfTZZAAAAAAAAAYAAQAB "
258+ )
259+ }
260+
261+ func testEncodingTokenAccountState( ) throws {
262+ let accountState = Token2022AccountState (
263+ mint: " 8nxJnGJDyvehdEHw4PgRc7ccJ1Zi134PhM2USK3WE8mS " ,
264+ owner: " E8E6GvyCpbGu7YSFxfhTXGx6SW4VhzVmxWh3gbrgXZNd " ,
265+ lamports: 0 ,
266+ delegateOption: 0 ,
267+ delegate: nil ,
268+ isInitialized: true ,
269+ isFrozen: false ,
270+ state: 1 ,
271+ isNativeOption: 0 ,
272+ rentExemptReserve: nil ,
273+ isNativeRaw: 0 ,
274+ isNative: false ,
275+ delegatedAmount: 0 ,
276+ closeAuthorityOption: 0 ,
277+ extensions: [
278+ . init(
279+ type: . immutableOwner,
280+ state: VecU8 < UInt16 > ( length: 0 , data: Data ( ) )
281+ ) ,
282+ ]
283+ )
284+
285+ // Serialize the state
286+ var data = Data ( )
287+ try accountState. serialize ( to: & data)
288+
289+ // Base64 encode the serialized data and compare with the expected value
290+ XCTAssertEqual (
291+ data. base64EncodedString ( ) ,
292+ " c8d675Tc8/enuGEbVogbaWoW6iY9JFkJIswLnf/gvCXDAcw04n4gWtOj5P12Rb7RAxY9RRwFQOwFWCWPS3OnJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcAAAA= "
293+ )
294+ }
267295}
0 commit comments