v0.2.12-pre.008
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-wallet-desk/unit_tests/wallet_balance.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Unit tests for exact Wallet balance presentation.
|
||||
|
||||
@@ -11,3 +11,23 @@ fn lamports_formatting_is_exact_and_uses_nine_fractional_digits() {
|
||||
assert_eq!(crate::format_lamports_as_sol(1_234_567_890), "1.234567890");
|
||||
assert_eq!(crate::format_lamports_as_sol(u64::MAX), "18446744073.709551615");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sol_usd_average_is_deterministic_rounded_and_never_uses_f64() {
|
||||
let values = ["103.96", "104.16", "104.07981394241013", "104.07595797523913", "103.92807280061784", "103.9"];
|
||||
let prices = values.iter().filter_map(|value| return ksp_offchain_transport_lib::MarketPriceDecimal::parse(value).ok()).collect::<std::vec::Vec<_>>();
|
||||
assert_eq!(prices.len(), values.len());
|
||||
assert_eq!(crate::average_sol_usd_prices(prices.as_slice()), std::option::Option::Some("104.01730745".to_owned()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sol_usd_average_returns_none_without_observation_and_handles_integer_fraction() {
|
||||
assert_eq!(crate::average_sol_usd_prices(&[]), std::option::Option::None);
|
||||
let one = ksp_offchain_transport_lib::MarketPriceDecimal::parse("1");
|
||||
let two = ksp_offchain_transport_lib::MarketPriceDecimal::parse("2");
|
||||
assert!(one.is_ok());
|
||||
assert!(two.is_ok());
|
||||
if let (std::result::Result::Ok(one), std::result::Result::Ok(two)) = (one, two) {
|
||||
assert_eq!(crate::average_sol_usd_prices(&[one, two]), std::option::Option::Some("1.5".to_owned()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user