Files
pezkuwi-sdk/pezcumulus/teyrchains/runtimes/assets/asset-hub-pezkuwichain/src/tests/mod.rs
T
pezkuwichain b6d35f6faf chore: add Dijital Kurdistan Tech Institute to copyright headers
Updated 4763 files with dual copyright:
- Parity Technologies (UK) Ltd.
- Dijital Kurdistan Tech Institute
2025-12-27 21:28:36 +03:00

75 lines
2.8 KiB
Rust

// 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.
//! # Tests for the Pezkuwichain runtime.
use super::*;
use crate::{CENTS, MILLICENTS};
use pezsp_runtime::traits::Zero;
use pezsp_weights::WeightToFee;
use testnet_teyrchains_constants::pezkuwichain::fee;
/// We can fit at least 1000 transfers in a block.
#[test]
fn sane_block_weight() {
use pezpallet_balances::WeightInfo;
let block = RuntimeBlockWeights::get().max_block;
let base = RuntimeBlockWeights::get().get(DispatchClass::Normal).base_extrinsic;
let transfer =
base + weights::pezpallet_balances::WeightInfo::<Runtime>::transfer_allow_death();
let fit = block.checked_div_per_component(&transfer).unwrap_or_default();
assert!(fit >= 1000, "{} should be at least 1000", fit);
}
/// The fee for one transfer is at most 1 CENT.
#[test]
fn sane_transfer_fee() {
use pezpallet_balances::WeightInfo;
let base = RuntimeBlockWeights::get().get(DispatchClass::Normal).base_extrinsic;
let transfer =
base + weights::pezpallet_balances::WeightInfo::<Runtime>::transfer_allow_death();
let fee: Balance = fee::WeightToFee::weight_to_fee(&transfer);
assert!(fee <= CENTS, "{} MILLICENTS should be at most 1000", fee / MILLICENTS);
}
/// Weight is being charged for both dimensions.
#[test]
fn weight_charged_for_both_components() {
let fee: Balance = fee::WeightToFee::weight_to_fee(&Weight::from_parts(10_000, 0));
assert!(!fee.is_zero(), "Charges for ref time");
let fee: Balance = fee::WeightToFee::weight_to_fee(&Weight::from_parts(0, 10_000));
assert_eq!(fee, CENTS, "10kb maps to CENT");
}
/// Filling up a block by proof size is at most 30 times more expensive than ref time.
///
/// This is just a sanity check.
#[test]
fn full_block_fee_ratio() {
let block = RuntimeBlockWeights::get().max_block;
let time_fee: Balance =
fee::WeightToFee::weight_to_fee(&Weight::from_parts(block.ref_time(), 0));
let proof_fee: Balance =
fee::WeightToFee::weight_to_fee(&Weight::from_parts(0, block.proof_size()));
let proof_o_time = proof_fee.checked_div(time_fee).unwrap_or_default();
assert!(proof_o_time <= 30, "{} should be at most 30", proof_o_time);
let time_o_proof = time_fee.checked_div(proof_fee).unwrap_or_default();
assert!(time_o_proof <= 30, "{} should be at most 30", time_o_proof);
}