Tests fixup

This commit is contained in:
Marcello Seri 2015-10-16 22:47:54 +01:00
parent 2a59875c72
commit 65547ff5a2
1 changed files with 29 additions and 100 deletions

View File

@ -199,6 +199,7 @@ mod ziggurat_tables;
/// * `pdf`: the probability density function
/// * `zero_case`: manual sampling from the tail when we chose the
/// bottom box (i.e. i == 0)
// the perf improvement (25-50%) is definitely worth the extra code
// size from force-inlining.
#[inline(always)]
@ -297,6 +298,7 @@ mod tests {
assert_eq!(rand_sample.ind_sample(&mut ::test::rng()), ConstRand(0));
}
#[test]
#[rustfmt_skip]
fn test_weighted_choice() {
// this makes assumptions about the internal implementation of
// WeightedChoice, specifically: it doesn't reorder the items,
@ -317,94 +319,37 @@ mod tests {
}}
}
t!(vec!(Weighted {
weight: 1,
item: 10,
}),
t!(vec!(Weighted { weight: 1, item: 10 }),
[10]);
// skip some
t!(vec!(Weighted {
weight: 0,
item: 20,
},
Weighted {
weight: 2,
item: 21,
},
Weighted {
weight: 0,
item: 22,
},
Weighted {
weight: 1,
item: 23,
}),
t!(vec!(Weighted { weight: 0, item: 20 },
Weighted { weight: 2, item: 21 },
Weighted { weight: 0, item: 22 },
Weighted { weight: 1, item: 23 }),
[21, 21, 23]);
// different weights
t!(vec!(Weighted {
weight: 4,
item: 30,
},
Weighted {
weight: 3,
item: 31,
}),
t!(vec!(Weighted { weight: 4, item: 30 },
Weighted { weight: 3, item: 31 }),
[30, 30, 30, 30, 31, 31, 31]);
// check that we're binary searching
// correctly with some vectors of odd
// length.
t!(vec!(Weighted {
weight: 1,
item: 40,
},
Weighted {
weight: 1,
item: 41,
},
Weighted {
weight: 1,
item: 42,
},
Weighted {
weight: 1,
item: 43,
},
Weighted {
weight: 1,
item: 44,
}),
t!(vec!(Weighted { weight: 1, item: 40 },
Weighted { weight: 1, item: 41 },
Weighted { weight: 1, item: 42 },
Weighted { weight: 1, item: 43 },
Weighted { weight: 1, item: 44 }),
[40, 41, 42, 43, 44]);
t!(vec!(Weighted {
weight: 1,
item: 50,
},
Weighted {
weight: 1,
item: 51,
},
Weighted {
weight: 1,
item: 52,
},
Weighted {
weight: 1,
item: 53,
},
Weighted {
weight: 1,
item: 54,
},
Weighted {
weight: 1,
item: 55,
},
Weighted {
weight: 1,
item: 56,
}),
t!(vec!(Weighted { weight: 1, item: 50 },
Weighted { weight: 1, item: 51 },
Weighted { weight: 1, item: 52 },
Weighted { weight: 1, item: 53 },
Weighted { weight: 1, item: 54 },
Weighted { weight: 1, item: 55 },
Weighted { weight: 1, item: 56 }),
[50, 51, 52, 53, 54, 55, 56]);
}
@ -415,35 +360,19 @@ mod tests {
}
#[test]
#[should_panic]
#[rustfmt_skip]
fn test_weighted_choice_zero_weight() {
WeightedChoice::new(&mut [Weighted {
weight: 0,
item: 0,
},
Weighted {
weight: 0,
item: 1,
}]);
WeightedChoice::new(&mut [Weighted { weight: 0, item: 0 },
Weighted { weight: 0, item: 1 }]);
}
#[test]
#[should_panic]
#[rustfmt_skip]
fn test_weighted_choice_weight_overflows() {
let x = (!0) as usize / 2; // x + x + 2 is the overflow
WeightedChoice::new(&mut [Weighted {
weight: x,
item: 0,
},
Weighted {
weight: 1,
item: 1,
},
Weighted {
weight: x,
item: 2,
},
Weighted {
weight: 1,
item: 3,
}]);
WeightedChoice::new(&mut [Weighted { weight: x, item: 0 },
Weighted { weight: 1, item: 1 },
Weighted { weight: x, item: 2 },
Weighted { weight: 1, item: 3 }]);
}
}