Files
khadhroony-solana-project/crates/ksp-app-wallet-desk/unit_tests/wallet_balance.rs
2026-08-27 14:41:08 +02:00

34 lines
1.6 KiB
Rust

// file: crates/ksp-app-wallet-desk/unit_tests/wallet_balance.rs
// version: 2
//! Unit tests for exact Wallet balance presentation.
#[test]
fn lamports_formatting_is_exact_and_uses_nine_fractional_digits() {
assert_eq!(crate::format_lamports_as_sol(0), "0.000000000");
assert_eq!(crate::format_lamports_as_sol(1), "0.000000001");
assert_eq!(crate::format_lamports_as_sol(1_000_000_000), "1.000000000");
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()));
}
}