1234567891011121314151617use super::*;18use crate::{Pallet, Config, FungibleHandle};1920use sp_std::prelude::*;21use pallet_common::benchmarking::create_collection_raw;22use frame_benchmarking::{benchmarks, account};23use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH, budget::Unlimited};24use pallet_common::bench_init;2526const SEED: u32 = 1;2728fn create_collection<T: Config>(29 owner: T::CrossAccountId,30) -> Result<FungibleHandle<T>, DispatchError> {31 create_collection_raw(32 owner,33 CollectionMode::Fungible(0),34 |owner: T::CrossAccountId, data| {35 <Pallet<T>>::init_collection(owner.clone(), owner, data, Default::default())36 },37 FungibleHandle::cast,38 )39}4041benchmarks! {42 create_item {43 bench_init!{44 owner: sub; collection: collection(owner);45 sender: cross_from_sub(owner); to: cross_sub;46 };47 }: {<Pallet<T>>::create_item(&collection, &sender, (to, 200), &Unlimited)?}4849 create_multiple_items_ex {50 let b in 0..MAX_ITEMS_PER_BATCH;51 bench_init!{52 owner: sub; collection: collection(owner);53 sender: cross_from_sub(owner);54 };55 let data = (0..b).map(|i| {56 bench_init!(to: cross_sub(i););57 (to, 200)58 }).collect::<BTreeMap<_, _>>().try_into().unwrap();59 }: {<Pallet<T>>::create_multiple_items(&collection, &sender, data, &Unlimited)?}6061 burn_item {62 bench_init!{63 owner: sub; collection: collection(owner);64 owner: cross_from_sub; burner: cross_sub;65 };66 <Pallet<T>>::create_item(&collection, &owner, (burner.clone(), 200), &Unlimited)?;67 }: {<Pallet<T>>::burn(&collection, &burner, 100)?}6869 transfer {70 bench_init!{71 owner: sub; collection: collection(owner);72 owner: cross_from_sub; sender: cross_sub; to: cross_sub;73 };74 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;75 }: {<Pallet<T>>::transfer(&collection, &sender, &to, 200, &Unlimited)?}7677 approve {78 bench_init!{79 owner: sub; collection: collection(owner);80 owner: cross_from_sub; sender: cross_sub; spender: cross_sub;81 };82 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;83 }: {<Pallet<T>>::set_allowance(&collection, &sender, &spender, 100)?}8485 transfer_from {86 bench_init!{87 owner: sub; collection: collection(owner);88 owner: cross_from_sub; sender: cross_sub; spender: cross_sub; receiver: cross_sub;89 };90 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;91 <Pallet<T>>::set_allowance(&collection, &sender, &spender, 200)?;92 }: {<Pallet<T>>::transfer_from(&collection, &spender, &sender, &receiver, 100, &Unlimited)?}9394 burn_from {95 bench_init!{96 owner: sub; collection: collection(owner);97 owner: cross_from_sub; sender: cross_sub; burner: cross_sub;98 };99 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;100 <Pallet<T>>::set_allowance(&collection, &sender, &burner, 200)?;101 }: {<Pallet<T>>::burn_from(&collection, &burner, &sender, 100, &Unlimited)?}102}