use crate::book::protocol::reject::RejectReason;
use crate::types::{Money, OddsX10000};
#[allow(dead_code)]
pub fn validate_order_params(price: OddsX10000, stake: Money) -> Result<(), RejectReason> {
if !price.is_valid_tick() {
return Err(RejectReason::InvalidOdds);
}
if !stake.is_positive() {
return Err(RejectReason::InvalidStake);
}
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn valid_params_accepted() {
let result = validate_order_params(OddsX10000(20000), Money(100));
assert!(result.is_ok());
}
#[test]
fn invalid_odds_rejected() {
let result = validate_order_params(OddsX10000(20100), Money(100));
assert_eq!(result, Err(RejectReason::InvalidOdds));
}
#[test]
fn zero_stake_rejected() {
let result = validate_order_params(OddsX10000(20000), Money(0));
assert_eq!(result, Err(RejectReason::InvalidStake));
}
#[test]
fn negative_stake_rejected() {
let result = validate_order_params(OddsX10000(20000), Money(-100));
assert_eq!(result, Err(RejectReason::InvalidStake));
}
}