Skip to content

Commit

Permalink
Auto merge of #30991 - rthomas:master, r=Gankro
Browse files Browse the repository at this point in the history
Using the test @bluss suggested in #30983
  • Loading branch information
bors committed Feb 2, 2016
2 parents 01d44ca + 8aae7f7 commit ddd1bf5
Showing 1 changed file with 29 additions and 1 deletion.
30 changes: 29 additions & 1 deletion src/libstd/collections/hash/map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,10 @@ impl DefaultResizePolicy {
//
// This doesn't have to be checked for overflow since allocation size
// in bytes will overflow earlier than multiplication by 10.
cap * 10 / 11
//
// As per https://github.com/rust-lang/rust/pull/30991 this is updated
// to be: (cap * den + den - 1) / num
(cap * 10 + 10 - 1) / 11
}
}

Expand Down Expand Up @@ -2418,4 +2421,29 @@ mod test_map {
assert_eq!(a[&2], "two");
assert_eq!(a[&3], "three");
}

#[test]
fn test_capacity_not_less_than_len() {
let mut a = HashMap::new();
let mut item = 0;

for _ in 0..116 {
a.insert(item, 0);
item += 1;
}

assert!(a.capacity() > a.len());

let free = a.capacity() - a.len();
for _ in 0..free {
a.insert(item, 0);
item += 1;
}

assert_eq!(a.len(), a.capacity());

// Insert at capacity should cause allocation.
a.insert(item, 0);
assert!(a.capacity() > a.len());
}
}

0 comments on commit ddd1bf5

Please sign in to comment.