mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Make tests run again
This commit is contained in:
parent
acc70380b3
commit
003d54fd9c
5 changed files with 7 additions and 186 deletions
|
@ -10,4 +10,7 @@ repository = "https://github.com/Manishearth/hashglobe"
|
|||
readme = "README.md"
|
||||
|
||||
[dependencies]
|
||||
libc = "0.2"
|
||||
libc = "0.2"
|
||||
|
||||
[dev-dependencies]
|
||||
rand = "0.3"
|
128
src/bench.rs
128
src/bench.rs
|
@ -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;
|
||||
})
|
||||
}
|
|
@ -2213,12 +2213,12 @@ fn assert_covariance() {
|
|||
|
||||
#[cfg(test)]
|
||||
mod test_map {
|
||||
extern crate rand;
|
||||
use super::HashMap;
|
||||
use super::Entry::{Occupied, Vacant};
|
||||
use super::RandomState;
|
||||
use cell::RefCell;
|
||||
use rand::{thread_rng, Rng};
|
||||
use panic;
|
||||
use self::rand::{thread_rng, Rng};
|
||||
|
||||
#[test]
|
||||
fn test_zero_capacities() {
|
||||
|
@ -3092,57 +3092,4 @@ mod test_map {
|
|||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1242,7 +1242,7 @@ fn assert_covariance() {
|
|||
#[cfg(test)]
|
||||
mod test_set {
|
||||
use super::HashSet;
|
||||
use super::super::map::RandomState;
|
||||
use super::hash_map::RandomState;
|
||||
|
||||
#[test]
|
||||
fn test_zero_capacities() {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
pub use std::*;
|
||||
|
||||
mod bench;
|
||||
mod table;
|
||||
mod shim;
|
||||
mod alloc;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue