1234567891011121314151617use frame_benchmarking::{account, benchmarks};18use pallet_common::{bench_init, benchmarking::create_collection_raw};19use sp_std::prelude::*;20use up_data_structs::{budget::Unlimited, CollectionMode, MAX_ITEMS_PER_BATCH};2122use super::*;23use crate::{Config, FungibleHandle, Pallet};2425const SEED: u32 = 1;2627fn create_collection<T: Config>(28 owner: T::CrossAccountId,29) -> Result<FungibleHandle<T>, DispatchError> {30 create_collection_raw(31 owner,32 CollectionMode::Fungible(0),33 |owner: T::CrossAccountId, data| <Pallet<T>>::init_collection(owner.clone(), owner, data),34 FungibleHandle::cast,35 )36}3738benchmarks! {39 create_item {40 bench_init!{41 owner: sub; collection: collection(owner);42 sender: cross_from_sub(owner); to: cross_sub;43 };44 }: {<Pallet<T>>::create_item(&collection, &sender, (to, 200), &Unlimited)?}4546 create_multiple_items_ex {47 let b in 0..MAX_ITEMS_PER_BATCH;48 bench_init!{49 owner: sub; collection: collection(owner);50 sender: cross_from_sub(owner);51 };52 let data = (0..b).map(|i| {53 bench_init!(to: cross_sub(i););54 (to, 200)55 }).collect::<BTreeMap<_, _>>();56 }: {<Pallet<T>>::create_multiple_items(&collection, &sender, data, &Unlimited)?}5758 burn_item {59 bench_init!{60 owner: sub; collection: collection(owner);61 owner: cross_from_sub; burner: cross_sub;62 };63 <Pallet<T>>::create_item(&collection, &owner, (burner.clone(), 200), &Unlimited)?;64 }: {<Pallet<T>>::burn(&collection, &burner, 100)?}6566 transfer_raw {67 bench_init!{68 owner: sub; collection: collection(owner);69 owner: cross_from_sub; sender: cross_sub; to: cross_sub;70 };71 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;72 }: {<Pallet<T>>::transfer(&collection, &sender, &to, 200, &Unlimited)?}7374 approve {75 bench_init!{76 owner: sub; collection: collection(owner);77 owner: cross_from_sub; sender: cross_sub; spender: cross_sub;78 };79 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;80 }: {<Pallet<T>>::set_allowance(&collection, &sender, &spender, 100)?}8182 approve_from {83 bench_init!{84 owner: sub; collection: collection(owner);85 owner: cross_from_sub; sender: cross_sub; spender: cross_sub;8687 };88 let owner_eth = T::CrossAccountId::from_eth(*sender.as_eth());89 <Pallet<T>>::create_item(&collection, &owner, (owner_eth.clone(), 200), &Unlimited)?;90 }: {<Pallet<T>>::set_allowance_from(&collection, &sender, &owner_eth, &spender, 100)?}9192 check_allowed_raw {93 bench_init!{94 owner: sub; collection: collection(owner);95 owner: cross_from_sub; sender: cross_sub; spender: cross_sub;96 };97 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;98 <Pallet<T>>::set_allowance(&collection, &sender, &spender, 200)?;99 }: {<Pallet<T>>::check_allowed(&collection, &spender, &sender, 200, &Unlimited)?;}100101 set_allowance_unchecked_raw {102 bench_init!{103 owner: sub; collection: collection(owner);104 owner: cross_from_sub; sender: cross_sub; spender: cross_sub;105 };106 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;107 }: {<Pallet<T>>::set_allowance_unchecked(&collection, &sender, &spender, 200);}108109 burn_from {110 bench_init!{111 owner: sub; collection: collection(owner);112 owner: cross_from_sub; sender: cross_sub; burner: cross_sub;113 };114 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200), &Unlimited)?;115 <Pallet<T>>::set_allowance(&collection, &sender, &burner, 200)?;116 }: {<Pallet<T>>::burn_from(&collection, &burner, &sender, 100, &Unlimited)?}117}