Make tests run again

This commit is contained in:
Manish Goregaokar 2017-08-29 14:06:40 -07:00
parent acc70380b3
commit 003d54fd9c
5 changed files with 7 additions and 186 deletions

View file

@ -10,4 +10,7 @@ repository = "https://github.com/Manishearth/hashglobe"
readme = "README.md" readme = "README.md"
[dependencies] [dependencies]
libc = "0.2" libc = "0.2"
[dev-dependencies]
rand = "0.3"

View file

@ -1,128 +0,0 @@
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![cfg(test)]
extern crate test;
use self::test::Bencher;
#[bench]
fn new_drop(b: &mut Bencher) {
use super::map::HashMap;
b.iter(|| {
let m: HashMap<i32, i32> = HashMap::new();
assert_eq!(m.len(), 0);
})
}
#[bench]
fn new_insert_drop(b: &mut Bencher) {
use super::map::HashMap;
b.iter(|| {
let mut m = HashMap::new();
m.insert(0, 0);
assert_eq!(m.len(), 1);
})
}
#[bench]
fn grow_by_insertion(b: &mut Bencher) {
use super::map::HashMap;
let mut m = HashMap::new();
for i in 1..1001 {
m.insert(i, i);
}
let mut k = 1001;
b.iter(|| {
m.insert(k, k);
k += 1;
});
}
#[bench]
fn find_existing(b: &mut Bencher) {
use super::map::HashMap;
let mut m = HashMap::new();
for i in 1..1001 {
m.insert(i, i);
}
b.iter(|| {
for i in 1..1001 {
m.contains_key(&i);
}
});
}
#[bench]
fn find_nonexisting(b: &mut Bencher) {
use super::map::HashMap;
let mut m = HashMap::new();
for i in 1..1001 {
m.insert(i, i);
}
b.iter(|| {
for i in 1001..2001 {
m.contains_key(&i);
}
});
}
#[bench]
fn hashmap_as_queue(b: &mut Bencher) {
use super::map::HashMap;
let mut m = HashMap::new();
for i in 1..1001 {
m.insert(i, i);
}
let mut k = 1;
b.iter(|| {
m.remove(&k);
m.insert(k + 1000, k + 1000);
k += 1;
});
}
#[bench]
fn get_remove_insert(b: &mut Bencher) {
use super::map::HashMap;
let mut m = HashMap::new();
for i in 1..1001 {
m.insert(i, i);
}
let mut k = 1;
b.iter(|| {
m.get(&(k + 400));
m.get(&(k + 2000));
m.remove(&k);
m.insert(k + 1000, k + 1000);
k += 1;
})
}

View file

@ -2213,12 +2213,12 @@ fn assert_covariance() {
#[cfg(test)] #[cfg(test)]
mod test_map { mod test_map {
extern crate rand;
use super::HashMap; use super::HashMap;
use super::Entry::{Occupied, Vacant}; use super::Entry::{Occupied, Vacant};
use super::RandomState; use super::RandomState;
use cell::RefCell; use cell::RefCell;
use rand::{thread_rng, Rng}; use self::rand::{thread_rng, Rng};
use panic;
#[test] #[test]
fn test_zero_capacities() { fn test_zero_capacities() {
@ -3092,57 +3092,4 @@ mod test_map {
} }
panic!("Adaptive early resize failed"); panic!("Adaptive early resize failed");
} }
#[test]
fn test_placement_in() {
let mut map = HashMap::new();
map.extend((0..10).map(|i| (i, i)));
map.entry(100) <- 100;
assert_eq!(map[&100], 100);
map.entry(0) <- 10;
assert_eq!(map[&0], 10);
assert_eq!(map.len(), 11);
}
#[test]
fn test_placement_panic() {
let mut map = HashMap::new();
map.extend((0..10).map(|i| (i, i)));
fn mkpanic() -> usize { panic!() }
// modify existing key
// when panic happens, previous key is removed.
let _ = panic::catch_unwind(panic::AssertUnwindSafe(|| { map.entry(0) <- mkpanic(); }));
assert_eq!(map.len(), 9);
assert!(!map.contains_key(&0));
// add new key
let _ = panic::catch_unwind(panic::AssertUnwindSafe(|| { map.entry(100) <- mkpanic(); }));
assert_eq!(map.len(), 9);
assert!(!map.contains_key(&100));
}
#[test]
fn test_placement_drop() {
// correctly drop
struct TestV<'a>(&'a mut bool);
impl<'a> Drop for TestV<'a> {
fn drop(&mut self) {
if !*self.0 { panic!("value double drop!"); } // no double drop
*self.0 = false;
}
}
fn makepanic<'a>() -> TestV<'a> { panic!() }
let mut can_drop = true;
let mut hm = HashMap::new();
hm.insert(0, TestV(&mut can_drop));
let _ = panic::catch_unwind(panic::AssertUnwindSafe(|| { hm.entry(0) <- makepanic(); }));
assert_eq!(hm.len(), 0);
}
} }

View file

@ -1242,7 +1242,7 @@ fn assert_covariance() {
#[cfg(test)] #[cfg(test)]
mod test_set { mod test_set {
use super::HashSet; use super::HashSet;
use super::super::map::RandomState; use super::hash_map::RandomState;
#[test] #[test]
fn test_zero_capacities() { fn test_zero_capacities() {

View file

@ -1,6 +1,5 @@
pub use std::*; pub use std::*;
mod bench;
mod table; mod table;
mod shim; mod shim;
mod alloc; mod alloc;