mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-23 08:25:40 +00:00
relax input conditions of fixed::checked_from_integer (#11159)
* relax input conditions of fixed::checked_from_integer * Fix build
This commit is contained in:
@@ -348,7 +348,7 @@ pub mod pallet {
|
|||||||
// loss.
|
// loss.
|
||||||
assert!(
|
assert!(
|
||||||
<Multiplier as sp_runtime::traits::Bounded>::max_value() >=
|
<Multiplier as sp_runtime::traits::Bounded>::max_value() >=
|
||||||
Multiplier::checked_from_integer(
|
Multiplier::checked_from_integer::<u128>(
|
||||||
T::BlockWeights::get().max_block.try_into().unwrap()
|
T::BlockWeights::get().max_block.try_into().unwrap()
|
||||||
)
|
)
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
|
|||||||
@@ -121,7 +121,8 @@ pub trait FixedPointNumber:
|
|||||||
/// Creates `self` from an integer number `int`.
|
/// Creates `self` from an integer number `int`.
|
||||||
///
|
///
|
||||||
/// Returns `None` if `int` exceeds accuracy.
|
/// Returns `None` if `int` exceeds accuracy.
|
||||||
fn checked_from_integer(int: Self::Inner) -> Option<Self> {
|
fn checked_from_integer<N: Into<Self::Inner>>(int: N) -> Option<Self> {
|
||||||
|
let int: Self::Inner = int.into();
|
||||||
int.checked_mul(&Self::DIV).map(Self::from_inner)
|
int.checked_mul(&Self::DIV).map(Self::from_inner)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -898,31 +899,32 @@ macro_rules! implement_fixed {
|
|||||||
let accuracy = $name::accuracy();
|
let accuracy = $name::accuracy();
|
||||||
|
|
||||||
// Case where integer fits.
|
// Case where integer fits.
|
||||||
let a = $name::checked_from_integer(42).expect("42 * accuracy <= inner_max; qed");
|
let a = $name::checked_from_integer::<$inner_type>(42)
|
||||||
|
.expect("42 * accuracy <= inner_max; qed");
|
||||||
assert_eq!(a.into_inner(), 42 * accuracy);
|
assert_eq!(a.into_inner(), 42 * accuracy);
|
||||||
|
|
||||||
// Max integer that fit.
|
// Max integer that fit.
|
||||||
let a = $name::checked_from_integer(inner_max / accuracy)
|
let a = $name::checked_from_integer::<$inner_type>(inner_max / accuracy)
|
||||||
.expect("(inner_max / accuracy) * accuracy <= inner_max; qed");
|
.expect("(inner_max / accuracy) * accuracy <= inner_max; qed");
|
||||||
assert_eq!(a.into_inner(), (inner_max / accuracy) * accuracy);
|
assert_eq!(a.into_inner(), (inner_max / accuracy) * accuracy);
|
||||||
|
|
||||||
// Case where integer doesn't fit, so it returns `None`.
|
// Case where integer doesn't fit, so it returns `None`.
|
||||||
let a = $name::checked_from_integer(inner_max / accuracy + 1);
|
let a = $name::checked_from_integer::<$inner_type>(inner_max / accuracy + 1);
|
||||||
assert_eq!(a, None);
|
assert_eq!(a, None);
|
||||||
|
|
||||||
if $name::SIGNED {
|
if $name::SIGNED {
|
||||||
// Case where integer fits.
|
// Case where integer fits.
|
||||||
let a = $name::checked_from_integer(0.saturating_sub(42))
|
let a = $name::checked_from_integer::<$inner_type>(0.saturating_sub(42))
|
||||||
.expect("-42 * accuracy >= inner_min; qed");
|
.expect("-42 * accuracy >= inner_min; qed");
|
||||||
assert_eq!(a.into_inner(), 0 - 42 * accuracy);
|
assert_eq!(a.into_inner(), 0 - 42 * accuracy);
|
||||||
|
|
||||||
// Min integer that fit.
|
// Min integer that fit.
|
||||||
let a = $name::checked_from_integer(inner_min / accuracy)
|
let a = $name::checked_from_integer::<$inner_type>(inner_min / accuracy)
|
||||||
.expect("(inner_min / accuracy) * accuracy <= inner_min; qed");
|
.expect("(inner_min / accuracy) * accuracy <= inner_min; qed");
|
||||||
assert_eq!(a.into_inner(), (inner_min / accuracy) * accuracy);
|
assert_eq!(a.into_inner(), (inner_min / accuracy) * accuracy);
|
||||||
|
|
||||||
// Case where integer doesn't fit, so it returns `None`.
|
// Case where integer doesn't fit, so it returns `None`.
|
||||||
let a = $name::checked_from_integer(inner_min / accuracy - 1);
|
let a = $name::checked_from_integer::<$inner_type>(inner_min / accuracy - 1);
|
||||||
assert_eq!(a, None);
|
assert_eq!(a, None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user