tests: 2d array test (#966)

This commit is contained in:
Tom Linton 2021-11-03 07:32:24 +13:00 committed by GitHub
parent 20726d06bd
commit f66eee7c6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 1 deletions

View File

@ -36,3 +36,8 @@ pub struct DataWithFilter {
pub authority: Pubkey,
pub filterable: Pubkey,
}
#[account]
pub struct DataMultidimensionalArray {
pub data: [[u8; 10]; 10],
}

View File

@ -252,3 +252,9 @@ pub struct TestInitIfNeeded<'info> {
pub payer: Signer<'info>,
pub system_program: Program<'info, System>,
}
#[derive(Accounts)]
pub struct TestMultidimensionalArray<'info> {
#[account(zero)]
pub data: Account<'info, DataMultidimensionalArray>,
}

View File

@ -189,4 +189,12 @@ pub mod misc {
ctx.accounts.data.data = data;
Ok(())
}
pub fn test_multidimensional_array(
ctx: Context<TestMultidimensionalArray>,
data: [[u8; 10]; 10],
) -> ProgramResult {
ctx.accounts.data.data = data;
Ok(())
}
}

View File

@ -835,4 +835,23 @@ describe("misc", () => {
const account = await program.account.dataU16.fetch(ifNeededAcc.publicKey);
assert.ok(account.data, 3);
});
it("Can use multidimensional array", async () => {
const array2d = new Array(10).fill(new Array(10).fill(99));
const data = anchor.web3.Keypair.generate();
const tx = await program.rpc.testMultidimensionalArray(array2d, {
accounts: {
data: data.publicKey,
rent: anchor.web3.SYSVAR_RENT_PUBKEY,
},
signers: [data],
instructions: [
await program.account.dataMultidimensionalArray.createInstruction(data),
],
});
const dataAccount = await program.account.dataMultidimensionalArray.fetch(
data.publicKey
);
assert.deepStrictEqual(dataAccount.data, array2d);
});
});