1use super::*;2use crate::{Pallet, Config, FungibleHandle};34use sp_std::prelude::*;5use pallet_common::benchmarking::create_collection_raw;6use frame_benchmarking::{benchmarks, account};7use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH};8use pallet_common::bench_init;910const SEED: u32 = 1;1112fn create_collection<T: Config>(owner: T::AccountId) -> Result<FungibleHandle<T>, DispatchError> {13 create_collection_raw(14 owner,15 CollectionMode::Fungible(0),16 <Pallet<T>>::init_collection,17 FungibleHandle::cast,18 )19}2021benchmarks! {22 create_item {23 bench_init!{24 owner: sub; collection: collection(owner);25 sender: cross_from_sub(owner); to: cross_sub;26 };27 }: {<Pallet<T>>::create_item(&collection, &sender, (to, 200))?}2829 create_multiple_items_ex {30 let b in 0..MAX_ITEMS_PER_BATCH;31 bench_init!{32 owner: sub; collection: collection(owner);33 sender: cross_from_sub(owner);34 };35 let data = (0..b).map(|i| {36 bench_init!(to: cross_sub(i););37 (to, 200)38 }).collect::<BTreeMap<_, _>>().try_into().unwrap();39 }: {<Pallet<T>>::create_multiple_items(&collection, &sender, data)}4041 burn_item {42 bench_init!{43 owner: sub; collection: collection(owner);44 owner: cross_from_sub; burner: cross_sub;45 };46 <Pallet<T>>::create_item(&collection, &owner, (burner.clone(), 200))?;47 }: {<Pallet<T>>::burn(&collection, &burner, 100)?}4849 transfer {50 bench_init!{51 owner: sub; collection: collection(owner);52 owner: cross_from_sub; sender: cross_sub; to: cross_sub;53 };54 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200))?;55 }: {<Pallet<T>>::transfer(&collection, &sender, &to, 200)?}5657 approve {58 bench_init!{59 owner: sub; collection: collection(owner);60 owner: cross_from_sub; sender: cross_sub; spender: cross_sub;61 };62 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200))?;63 }: {<Pallet<T>>::set_allowance(&collection, &sender, &spender, 100)?}6465 transfer_from {66 bench_init!{67 owner: sub; collection: collection(owner);68 owner: cross_from_sub; sender: cross_sub; spender: cross_sub; receiver: cross_sub;69 };70 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200))?;71 <Pallet<T>>::set_allowance(&collection, &sender, &spender, 200)?;72 }: {<Pallet<T>>::transfer_from(&collection, &spender, &sender, &receiver, 100)?}7374 burn_from {75 bench_init!{76 owner: sub; collection: collection(owner);77 owner: cross_from_sub; sender: cross_sub; burner: cross_sub;78 };79 <Pallet<T>>::create_item(&collection, &owner, (sender.clone(), 200))?;80 <Pallet<T>>::set_allowance(&collection, &sender, &burner, 200)?;81 }: {<Pallet<T>>::burn_from(&collection, &burner, &sender, 100)?}82}