PickleBALLER/examples/simple_test.rs

41 lines
1.7 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

use pickleball_elo::glicko::{GlickoRating, Glicko2Calculator, calculate_weighted_score};
fn main() {
println!("🏓 Glicko-2 Simple Test\n");
let calc = Glicko2Calculator::new();
// Test 1: Single match between equal players
println!("Test 1: Equal players, one wins 11-5");
let player = GlickoRating::new_player();
let opponent = GlickoRating::new_player();
println!(" Before: Player {:.1} (RD: {:.1})", player.rating, player.rd);
println!(" Before: Opponent {:.1} (RD: {:.1})\n", opponent.rating, opponent.rd);
let outcome = calculate_weighted_score(1.0, 11, 5);
println!(" Weighted outcome: {:.3}", outcome);
let new_rating = calc.update_rating(&player, &[(opponent, outcome)]);
println!(" After: Player {:.1} (RD: {:.1}, σ: {:.4})",
new_rating.rating, new_rating.rd, new_rating.volatility);
println!(" Change: {:+.1}\n", new_rating.rating - player.rating);
// Test 2: Close game vs blowout
println!("Test 2: Close win (11-9) vs Blowout (11-2)");
let close_outcome = calculate_weighted_score(1.0, 11, 9);
let blowout_outcome = calculate_weighted_score(1.0, 11, 2);
println!(" Close (11-9): weighted score = {:.3}", close_outcome);
println!(" Blowout (11-2): weighted score = {:.3}", blowout_outcome);
let close_new = calc.update_rating(&player, &[(opponent, close_outcome)]);
let blowout_new = calc.update_rating(&player, &[(opponent, blowout_outcome)]);
println!(" Close win rating change: {:+.1}", close_new.rating - player.rating);
println!(" Blowout win rating change: {:+.1}\n", blowout_new.rating - player.rating);
println!("✅ All tests complete!");
}