Improve quantile tests

This commit is contained in:
Vinzent Steinberg 2018-07-10 16:31:33 +02:00
parent 0de183127e
commit 1e7a852862
2 changed files with 25 additions and 2 deletions

View File

@ -41,3 +41,4 @@ bencher = "0.1"
rand = "0.5"
serde_json = "1"
streaming-stats = "0.2"
quantiles = "0.7"

View File

@ -3,8 +3,10 @@
extern crate average;
#[cfg(feature = "serde")]
extern crate serde_json;
extern crate quantiles;
use average::{Estimate, Quantile};
use quantiles::ckms::CKMS;
#[test]
fn few_observations() {
@ -356,11 +358,31 @@ fn percentile_99_9() {
52., 5., 38., 27., 29., 21., 27., 24., 36., 3., 24., 19., 0., 20., 20., 27., 27., 33., 28.,
33., 34., 8., 37., 34., 37., 35., 40., 34., 37.];
let mut quantile = Quantile::new(0.999);
const TOL: f64 = 0.0001;
const P: f64 = 0.999;
let mut quantile = Quantile::new(P);
let mut ckms = CKMS::new(TOL);
for &o in observations.iter() {
quantile.add(o);
ckms.insert(o);
}
let _ = quantile.quantile();
let q1 = quantile.quantile();
let (_, q2) = ckms.query(P).unwrap();
assert!((q1 - q2).abs() < 0.3, "{} vs. {}", q1, q2);
}
#[test]
fn percentile_99() {
const TOL: f64 = 0.0001;
let mut q = Quantile::new(0.99);
for _ in 0..100 {
for i in 0..10 {
let f = f64::from(i);
q.add(f);
}
}
assert!((q.quantile() - 9.).abs() < TOL);
}