// This file is part of Bizinikiwi. // Copyright (C) Parity Technologies (UK) Ltd. and Dijital Kurdistan Tech Institute // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #[cfg(test)] use super::{ assert_ok, pezframe_system::{Numbers, Total}, Runtime, RuntimeOrigin, RuntimeTask, System, }; use pezframe_support_procedural::pezpallet_section; #[pezpallet_section] mod tasks_example { #[docify::export(tasks_example)] #[pezpallet::tasks_experimental] impl Pezpallet { /// Add a pair of numbers into the totals and remove them. #[pezpallet::task_list(Numbers::::iter_keys())] #[pezpallet::task_condition(|i| Numbers::::contains_key(i))] #[pezpallet::task_weight(0.into())] #[pezpallet::task_index(0)] pub fn add_number_into_total(i: u32) -> DispatchResult { let v = Numbers::::take(i).ok_or(Error::::NotFound)?; Total::::mutate(|(total_keys, total_values)| { *total_keys += i; *total_values += v; }); Ok(()) } } } #[docify::export] #[test] fn tasks_work() { super::new_test_ext().execute_with(|| { Numbers::::insert(0, 1); let task = RuntimeTask::System(super::pezframe_system::Task::::AddNumberIntoTotal { i: 0u32, }); assert_ok!(System::do_task(RuntimeOrigin::signed(1), task.clone(),)); assert_eq!(Numbers::::get(0), None); assert_eq!(Total::::get(), (0, 1)); }); }