Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ The minor version will be incremented upon a breaking change and the patch versi
- avm: Add support for the `.anchorversion` file to facilitate switching between different versions of the `anchor-cli` ([#2553](https://github.com/coral-xyz/anchor/pull/2553)).
- ts: Add ability to access workspace programs independent of the casing used, e.g. `anchor.workspace.myProgram`, `anchor.workspace.MyProgram`... ([#2579](https://github.com/coral-xyz/anchor/pull/2579)).
- spl: Export `mpl-token-metadata` crate ([#2583](https://github.com/coral-xyz/anchor/pull/2583)).
- spl: Add `TokenRecordAccount` for pNFTs ([#2597](https://github.com/coral-xyz/anchor/pull/2597)).
- ts: Add support for unnamed(tuple) enum in accounts([#2601](https://github.com/coral-xyz/anchor/pull/2601)).

### Fixes

Expand Down
22 changes: 22 additions & 0 deletions tests/misc/programs/misc-optional/src/account.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ pub struct DataI16 {
}
size!(DataI16, 2);

#[account]
pub struct DataEnum {
pub data: TestEnum, // 1 + 16
}
size!(DataEnum, 17);

#[account(zero_copy)]
pub struct DataZeroCopy {
pub data: u16, // 2
Expand Down Expand Up @@ -73,3 +79,19 @@ pub struct DataConstCastArraySize {
pub struct DataMultidimensionalArrayConstSizes {
pub data: [[u8; MAX_SIZE_U8 as usize]; MAX_SIZE],
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub enum TestEnum {
First,
Second { x: u64, y: u64 },
TupleTest(u8, u8, u16, u16),
TupleStructTest(TestStruct),
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub struct TestStruct {
pub data1: u8,
pub data2: u16,
pub data3: u32,
pub data4: u64,
}
8 changes: 8 additions & 0 deletions tests/misc/programs/misc-optional/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,14 @@ pub struct TestI16<'info> {
#[derive(Accounts)]
pub struct TestSimulate {}

#[derive(Accounts)]
pub struct TestAccountEnum<'info> {
#[account(init, payer = payer.as_ref().unwrap(), space = 8+ DataEnum::LEN )]
pub data: Option<Account<'info, DataEnum>>,
pub payer: Option<Signer<'info>>,
pub system_program: Option<Program<'info, System>>,
}

#[derive(Accounts)]
pub struct TestI8<'info> {
#[account(zero)]
Expand Down
18 changes: 2 additions & 16 deletions tests/misc/programs/misc-optional/src/event.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
use anchor_lang::prelude::*;

use crate::account::*;

pub const MAX_EVENT_SIZE: usize = 10;
pub const MAX_EVENT_SIZE_U8: u8 = 11;

Expand Down Expand Up @@ -33,22 +35,6 @@ pub struct E6 {
pub data: [u8; MAX_EVENT_SIZE_U8 as usize],
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub struct TestStruct {
pub data1: u8,
pub data2: u16,
pub data3: u32,
pub data4: u64,
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub enum TestEnum {
First,
Second { x: u64, y: u64 },
TupleTest(u8, u8, u16, u16),
TupleStructTest(TestStruct),
}

#[event]
pub struct E7 {
pub data: TestEnum,
Expand Down
36 changes: 26 additions & 10 deletions tests/misc/programs/misc-optional/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! Misc optional example is a catchall program for testing unrelated features.
//! It's not too instructive/coherent by itself, so please see other examples.

use account::MAX_SIZE;
use account::*;
use anchor_lang::prelude::*;
use context::*;
use event::*;
Expand Down Expand Up @@ -62,11 +62,16 @@ pub mod misc_optional {
Ok(())
}

pub fn test_input_enum(ctx: Context<TestSimulate>, data: TestEnum) -> Result<()> {
pub fn test_input_enum(_ctx: Context<TestSimulate>, data: TestEnum) -> Result<()> {
emit!(E7 { data: data });
Ok(())
}

pub fn test_account_enum(ctx: Context<TestAccountEnum>, data: TestEnum) -> Result<()> {
ctx.accounts.data.as_mut().unwrap().data = data;
Ok(())
}

pub fn test_i8(ctx: Context<TestI8>, data: i8) -> Result<()> {
ctx.accounts.data.as_mut().unwrap().data = data;
Ok(())
Expand Down Expand Up @@ -171,7 +176,9 @@ pub mod misc_optional {
Ok(())
}

pub fn test_init_mint_with_token_program(_ctx: Context<TestInitMintWithTokenProgram>) -> Result<()> {
pub fn test_init_mint_with_token_program(
_ctx: Context<TestInitMintWithTokenProgram>,
) -> Result<()> {
Ok(())
}

Expand All @@ -182,11 +189,12 @@ pub mod misc_optional {
Ok(())
}

pub fn test_init_token_with_token_program(_ctx: Context<TestInitTokenWithTokenProgram>) -> Result<()> {
pub fn test_init_token_with_token_program(
_ctx: Context<TestInitTokenWithTokenProgram>,
) -> Result<()> {
Ok(())
}


pub fn test_composite_payer(ctx: Context<TestCompositePayer>) -> Result<()> {
ctx.accounts.composite.data.as_mut().unwrap().data = 1;
ctx.accounts.data.as_mut().unwrap().udata = 2;
Expand All @@ -201,7 +209,9 @@ pub mod misc_optional {
Ok(())
}

pub fn test_init_associated_token_with_token_program(ctx: Context<TestInitAssociatedTokenWithTokenProgram>) -> Result<()> {
pub fn test_init_associated_token_with_token_program(
_ctx: Context<TestInitAssociatedTokenWithTokenProgram>,
) -> Result<()> {
Ok(())
}

Expand Down Expand Up @@ -261,7 +271,9 @@ pub mod misc_optional {
Ok(())
}

pub fn test_init_token_if_needed_with_token_program(_ctx: Context<TestInitTokenIfNeededWithTokenProgram>) -> Result<()> {
pub fn test_init_token_if_needed_with_token_program(
_ctx: Context<TestInitTokenIfNeededWithTokenProgram>,
) -> Result<()> {
Ok(())
}

Expand All @@ -277,7 +289,7 @@ pub mod misc_optional {
Ok(())
}

pub fn init_with_space(_ctx: Context<InitWithSpace>, data: u16) -> Result<()> {
pub fn init_with_space(_ctx: Context<InitWithSpace>, _data: u16) -> Result<()> {
Ok(())
}

Expand Down Expand Up @@ -357,7 +369,9 @@ pub mod misc_optional {
Ok(())
}

pub fn test_only_token_program_constraint(_ctx: Context<TestOnlyTokenProgramConstraint>) -> Result<()> {
pub fn test_only_token_program_constraint(
_ctx: Context<TestOnlyTokenProgramConstraint>,
) -> Result<()> {
Ok(())
}

Expand Down Expand Up @@ -401,7 +415,9 @@ pub mod misc_optional {
Ok(())
}

pub fn test_associated_token_with_token_program_constraint(_ctx: Context<TestAssociatedTokenWithTokenProgramConstraint>) -> Result<()> {
pub fn test_associated_token_with_token_program_constraint(
_ctx: Context<TestAssociatedTokenWithTokenProgramConstraint>,
) -> Result<()> {
Ok(())
}
}
22 changes: 22 additions & 0 deletions tests/misc/programs/misc/src/account.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ pub struct DataI16 {
}
size!(DataI16, 2);

#[account]
pub struct DataEnum {
pub data: TestEnum, // 1 + 16
}
size!(DataEnum, 17);

#[account(zero_copy)]
pub struct DataZeroCopy {
pub data: u16, // 2
Expand Down Expand Up @@ -94,3 +100,19 @@ pub enum CoolEnum {
some_slot: u64,
},
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub enum TestEnum {
First,
Second { x: u64, y: u64 },
TupleTest(u8, u8, u16, u16),
TupleStructTest(TestStruct),
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub struct TestStruct {
pub data1: u8,
pub data2: u16,
pub data3: u32,
pub data4: u64,
}
11 changes: 10 additions & 1 deletion tests/misc/programs/misc/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,15 @@ pub struct TestI16<'info> {
#[derive(Accounts)]
pub struct TestSimulate {}

#[derive(Accounts)]
pub struct TestAccountEnum<'info> {
#[account(init, payer = payer, space = 8 + DataEnum::LEN)]
pub data: Account<'info, DataEnum>,
#[account(mut)]
pub payer: Signer<'info>,
pub system_program: Program<'info, System>,
}

#[derive(Accounts)]
pub struct TestI8<'info> {
#[account(zero)]
Expand Down Expand Up @@ -767,4 +776,4 @@ pub struct TestUsedIdentifiers<'info> {
)]
/// CHECK: ignore
pub test4: AccountInfo<'info>,
}
}
22 changes: 4 additions & 18 deletions tests/misc/programs/misc/src/event.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
use anchor_lang::prelude::*;

use crate::account::*;

pub const MAX_EVENT_SIZE: usize = 10;
pub const MAX_EVENT_SIZE_U8: u8 = 11;

Expand Down Expand Up @@ -33,23 +35,7 @@ pub struct E6 {
pub data: [u8; MAX_EVENT_SIZE_U8 as usize],
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub struct TestStruct {
pub data1: u8,
pub data2: u16,
pub data3: u32,
pub data4: u64,
}

#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
pub enum TestEnum {
First,
Second {x: u64, y: u64},
TupleTest (u8, u8, u16, u16),
TupleStructTest (TestStruct),
}

#[event]
#[event]
pub struct E7 {
pub data: TestEnum,
}
}
35 changes: 26 additions & 9 deletions tests/misc/programs/misc/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! Misc example is a catchall program for testing unrelated features.
//! It's not too instructive/coherent by itself, so please see other examples.

use account::MAX_SIZE;
use account::*;
use anchor_lang::prelude::*;
use context::*;
use event::*;
Expand Down Expand Up @@ -71,6 +71,11 @@ pub mod misc {
Ok(())
}

pub fn test_account_enum(ctx: Context<TestAccountEnum>, data: TestEnum) -> Result<()> {
ctx.accounts.data.data = data;
Ok(())
}

pub fn test_i8(ctx: Context<TestI8>, data: i8) -> Result<()> {
ctx.accounts.data.data = data;
Ok(())
Expand Down Expand Up @@ -175,7 +180,9 @@ pub mod misc {
Ok(())
}

pub fn test_init_mint_with_token_program(_ctx: Context<TestInitMintWithTokenProgram>) -> Result<()> {
pub fn test_init_mint_with_token_program(
_ctx: Context<TestInitMintWithTokenProgram>,
) -> Result<()> {
Ok(())
}

Expand All @@ -184,7 +191,9 @@ pub mod misc {
Ok(())
}

pub fn test_init_token_with_token_program(_ctx: Context<TestInitTokenWithTokenProgram>) -> Result<()> {
pub fn test_init_token_with_token_program(
_ctx: Context<TestInitTokenWithTokenProgram>,
) -> Result<()> {
Ok(())
}

Expand All @@ -200,7 +209,9 @@ pub mod misc {
Ok(())
}

pub fn test_init_associated_token_with_token_program(_ctx: Context<TestInitAssociatedTokenWithTokenProgram>) -> Result<()> {
pub fn test_init_associated_token_with_token_program(
_ctx: Context<TestInitAssociatedTokenWithTokenProgram>,
) -> Result<()> {
Ok(())
}

Expand Down Expand Up @@ -250,7 +261,7 @@ pub mod misc {
}

pub fn test_init_mint_if_needed_with_token_program(
_ctx: Context<TestInitMintIfNeededWithTokenProgram>
_ctx: Context<TestInitMintIfNeededWithTokenProgram>,
) -> Result<()> {
Ok(())
}
Expand All @@ -259,7 +270,9 @@ pub mod misc {
Ok(())
}

pub fn test_init_token_if_needed_with_token_program(_ctx: Context<TestInitTokenIfNeededWithTokenProgram>) -> Result<()> {
pub fn test_init_token_if_needed_with_token_program(
_ctx: Context<TestInitTokenIfNeededWithTokenProgram>,
) -> Result<()> {
Ok(())
}

Expand Down Expand Up @@ -345,7 +358,9 @@ pub mod misc {
Ok(())
}

pub fn test_only_token_program_constraint(_ctx: Context<TestOnlyTokenProgramConstraint>) -> Result<()> {
pub fn test_only_token_program_constraint(
_ctx: Context<TestOnlyTokenProgramConstraint>,
) -> Result<()> {
Ok(())
}

Expand Down Expand Up @@ -389,7 +404,9 @@ pub mod misc {
Ok(())
}

pub fn test_associated_token_with_token_program_constraint(_ctx: Context<TestAssociatedTokenWithTokenProgramConstraint>) -> Result<()> {
pub fn test_associated_token_with_token_program_constraint(
_ctx: Context<TestAssociatedTokenWithTokenProgramConstraint>,
) -> Result<()> {
Ok(())
}

Expand All @@ -399,7 +416,7 @@ pub mod misc {
program_id: u8,
accounts: u8,
ix_data: u8,
remaining_accounts: u8
remaining_accounts: u8,
) -> Result<()> {
Ok(())
}
Expand Down
Loading