mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 07:22:42 +00:00
Rollup merge of #75531 - ssomers:btree_tests_migration, r=Mark-Simulacrum
Migrate unit tests of btree collections to their native breeding ground There's one BTreeSet test case that I couldn't easily convince to come along, maybe because it truly is an integration test. But leaving it in place would mean git wouldn't see the move so I also moved it to a new file. r? @Mark-Simulacrum
This commit is contained in:
commit
939befd65e
@ -3024,3 +3024,6 @@ impl<K: Ord, V, I: Iterator<Item = (K, V)>> Iterator for MergeIter<K, V, I> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
@ -1,16 +1,20 @@
|
||||
use std::collections::btree_map::Entry::{Occupied, Vacant};
|
||||
use std::collections::BTreeMap;
|
||||
use crate::boxed::Box;
|
||||
use crate::collections::btree_map::Entry::{Occupied, Vacant};
|
||||
use crate::collections::BTreeMap;
|
||||
use crate::fmt::Debug;
|
||||
use crate::rc::Rc;
|
||||
use crate::string::String;
|
||||
use crate::string::ToString;
|
||||
use crate::vec::Vec;
|
||||
use std::convert::TryFrom;
|
||||
use std::fmt::Debug;
|
||||
use std::iter::FromIterator;
|
||||
use std::mem;
|
||||
use std::ops::Bound::{self, Excluded, Included, Unbounded};
|
||||
use std::ops::RangeBounds;
|
||||
use std::panic::{catch_unwind, AssertUnwindSafe};
|
||||
use std::rc::Rc;
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
|
||||
use super::DeterministicRng;
|
||||
use super::super::DeterministicRng;
|
||||
|
||||
// Value of node::CAPACITY, thus capacity of a tree with a single level,
|
||||
// i.e. a tree who's root is a leaf node at height 0.
|
@ -25,3 +25,30 @@ pub unsafe fn unwrap_unchecked<T>(val: Option<T>) -> T {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
/// XorShiftRng
|
||||
struct DeterministicRng {
|
||||
x: u32,
|
||||
y: u32,
|
||||
z: u32,
|
||||
w: u32,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
impl DeterministicRng {
|
||||
fn new() -> Self {
|
||||
DeterministicRng { x: 0x193a6754, y: 0xa8a7d469, z: 0x97830e05, w: 0x113ba7bb }
|
||||
}
|
||||
|
||||
fn next(&mut self) -> u32 {
|
||||
let x = self.x;
|
||||
let t = x ^ (x << 11);
|
||||
self.x = self.y;
|
||||
self.y = self.z;
|
||||
self.z = self.w;
|
||||
let w_ = self.w;
|
||||
self.w = w_ ^ (w_ >> 19) ^ (t ^ (t >> 8));
|
||||
self.w
|
||||
}
|
||||
}
|
||||
|
@ -1572,3 +1572,6 @@ impl<'a, T: Ord> Iterator for Union<'a, T> {
|
||||
|
||||
#[stable(feature = "fused", since = "1.26.0")]
|
||||
impl<T: Ord> FusedIterator for Union<'_, T> {}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
@ -1,9 +1,10 @@
|
||||
use std::collections::BTreeSet;
|
||||
use crate::collections::BTreeSet;
|
||||
use crate::vec::Vec;
|
||||
use std::iter::FromIterator;
|
||||
use std::panic::{catch_unwind, AssertUnwindSafe};
|
||||
use std::sync::atomic::{AtomicU32, Ordering};
|
||||
|
||||
use super::DeterministicRng;
|
||||
use super::super::DeterministicRng;
|
||||
|
||||
#[test]
|
||||
fn test_clone_eq() {
|
||||
@ -15,24 +16,6 @@ fn test_clone_eq() {
|
||||
assert_eq!(m.clone(), m);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_hash() {
|
||||
use crate::hash;
|
||||
|
||||
let mut x = BTreeSet::new();
|
||||
let mut y = BTreeSet::new();
|
||||
|
||||
x.insert(1);
|
||||
x.insert(2);
|
||||
x.insert(3);
|
||||
|
||||
y.insert(3);
|
||||
y.insert(2);
|
||||
y.insert(1);
|
||||
|
||||
assert_eq!(hash(&x), hash(&y));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_iter_min_max() {
|
||||
let mut a = BTreeSet::new();
|
@ -80,6 +80,7 @@
|
||||
#![feature(arbitrary_self_types)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(btree_drain_filter)]
|
||||
#![feature(cfg_sanitize)]
|
||||
#![feature(cfg_target_has_atomic)]
|
||||
#![feature(coerce_unsized)]
|
||||
@ -102,6 +103,8 @@
|
||||
#![feature(lang_items)]
|
||||
#![feature(layout_for_ptr)]
|
||||
#![feature(libc)]
|
||||
#![feature(map_first_last)]
|
||||
#![feature(map_into_keys_values)]
|
||||
#![feature(negative_impls)]
|
||||
#![feature(new_uninit)]
|
||||
#![feature(nll)]
|
||||
|
@ -1,27 +0,0 @@
|
||||
mod map;
|
||||
mod set;
|
||||
|
||||
/// XorShiftRng
|
||||
struct DeterministicRng {
|
||||
x: u32,
|
||||
y: u32,
|
||||
z: u32,
|
||||
w: u32,
|
||||
}
|
||||
|
||||
impl DeterministicRng {
|
||||
fn new() -> Self {
|
||||
DeterministicRng { x: 0x193a6754, y: 0xa8a7d469, z: 0x97830e05, w: 0x113ba7bb }
|
||||
}
|
||||
|
||||
fn next(&mut self) -> u32 {
|
||||
let x = self.x;
|
||||
let t = x ^ (x << 11);
|
||||
self.x = self.y;
|
||||
self.y = self.z;
|
||||
self.z = self.w;
|
||||
let w_ = self.w;
|
||||
self.w = w_ ^ (w_ >> 19) ^ (t ^ (t >> 8));
|
||||
self.w
|
||||
}
|
||||
}
|
19
library/alloc/tests/btree_set_hash.rs
Normal file
19
library/alloc/tests/btree_set_hash.rs
Normal file
@ -0,0 +1,19 @@
|
||||
use std::collections::BTreeSet;
|
||||
|
||||
#[test]
|
||||
fn test_hash() {
|
||||
use crate::hash;
|
||||
|
||||
let mut x = BTreeSet::new();
|
||||
let mut y = BTreeSet::new();
|
||||
|
||||
x.insert(1);
|
||||
x.insert(2);
|
||||
x.insert(3);
|
||||
|
||||
y.insert(3);
|
||||
y.insert(2);
|
||||
y.insert(1);
|
||||
|
||||
assert_eq!(hash(&x), hash(&y));
|
||||
}
|
@ -1,10 +1,7 @@
|
||||
#![feature(allocator_api)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(btree_drain_filter)]
|
||||
#![feature(drain_filter)]
|
||||
#![feature(exact_size_is_empty)]
|
||||
#![feature(map_first_last)]
|
||||
#![feature(map_into_keys_values)]
|
||||
#![feature(new_uninit)]
|
||||
#![feature(pattern)]
|
||||
#![feature(str_split_once)]
|
||||
@ -25,7 +22,7 @@ mod arc;
|
||||
mod binary_heap;
|
||||
mod borrow;
|
||||
mod boxed;
|
||||
mod btree;
|
||||
mod btree_set_hash;
|
||||
mod cow_str;
|
||||
mod fmt;
|
||||
mod heap;
|
||||
|
Loading…
Reference in New Issue
Block a user