Added test for draw.
This commit is contained in:
26
src/lib.rs
26
src/lib.rs
@@ -72,7 +72,7 @@ fn draw_margin(p: f64, beta: f64, total_players: f64) -> f64 {
|
|||||||
math::icdf((p + 1.0) / 2.0) * total_players.sqrt() * beta
|
math::icdf((p + 1.0) / 2.0) * total_players.sqrt() * beta
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn rate<R>(rating_groups: &[&[R]]) -> Vec<Rating>
|
pub fn rate<R>(rating_groups: &[&[R]], ranks: &[u16]) -> Vec<Rating>
|
||||||
where
|
where
|
||||||
R: Rateable,
|
R: Rateable,
|
||||||
{
|
{
|
||||||
@@ -174,7 +174,7 @@ where
|
|||||||
factor_id,
|
factor_id,
|
||||||
ds[i],
|
ds[i],
|
||||||
epsilon,
|
epsilon,
|
||||||
false,
|
ranks[i] == ranks[i + 1],
|
||||||
));
|
));
|
||||||
|
|
||||||
factor_id += 1;
|
factor_id += 1;
|
||||||
@@ -342,7 +342,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_rate_1vs1() {
|
fn test_rate_4vs4() {
|
||||||
let alice = Rating::new(MU, SIGMA);
|
let alice = Rating::new(MU, SIGMA);
|
||||||
let bob = Rating::new(MU, SIGMA);
|
let bob = Rating::new(MU, SIGMA);
|
||||||
let chris = Rating::new(MU, SIGMA);
|
let chris = Rating::new(MU, SIGMA);
|
||||||
@@ -355,10 +355,28 @@ mod tests {
|
|||||||
Rating::new(16.79337409436942, 6.348053083319977),
|
Rating::new(16.79337409436942, 6.348053083319977),
|
||||||
];
|
];
|
||||||
|
|
||||||
let ratings = rate(&[&[alice], &[bob], &[chris], &[darren]]);
|
let ratings = rate(&[&[alice], &[bob], &[chris], &[darren]], &[0, 1, 2, 3]);
|
||||||
|
|
||||||
for (rating, expected) in ratings.iter().zip(expected_ratings.iter()) {
|
for (rating, expected) in ratings.iter().zip(expected_ratings.iter()) {
|
||||||
assert_relative_eq!(rating, expected, epsilon = EPSILON);
|
assert_relative_eq!(rating, expected, epsilon = EPSILON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_rate_1vs1_draw() {
|
||||||
|
let alice = Rating::new(MU, SIGMA);
|
||||||
|
let bob = Rating::new(MU, SIGMA);
|
||||||
|
|
||||||
|
let expected_ratings = vec![
|
||||||
|
Rating::new(25.0, 6.457515683245051),
|
||||||
|
Rating::new(25.0, 6.457515683245051),
|
||||||
|
];
|
||||||
|
|
||||||
|
let ratings = rate(&[&[alice], &[bob]], &[0, 0]);
|
||||||
|
|
||||||
|
for (rating, expected) in ratings.iter().zip(expected_ratings.iter()) {
|
||||||
|
assert_relative_eq!(rating, expected, epsilon = EPSILON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user