aboutsummaryrefslogtreecommitdiff
path: root/vendor/once_cell/tests/it/race.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/once_cell/tests/it/race.rs')
-rw-r--r--vendor/once_cell/tests/it/race.rs128
1 files changed, 0 insertions, 128 deletions
diff --git a/vendor/once_cell/tests/it/race.rs b/vendor/once_cell/tests/it/race.rs
deleted file mode 100644
index 24884dd..0000000
--- a/vendor/once_cell/tests/it/race.rs
+++ /dev/null
@@ -1,128 +0,0 @@
-#[cfg(feature = "std")]
-use std::sync::Barrier;
-use std::{
- num::NonZeroUsize,
- sync::atomic::{AtomicUsize, Ordering::SeqCst},
- thread::scope,
-};
-
-use once_cell::race::{OnceBool, OnceNonZeroUsize};
-
-#[test]
-fn once_non_zero_usize_smoke_test() {
- let cnt = AtomicUsize::new(0);
- let cell = OnceNonZeroUsize::new();
- let val = NonZeroUsize::new(92).unwrap();
- scope(|s| {
- s.spawn(|| {
- assert_eq!(
- cell.get_or_init(|| {
- cnt.fetch_add(1, SeqCst);
- val
- }),
- val
- );
- assert_eq!(cnt.load(SeqCst), 1);
-
- assert_eq!(
- cell.get_or_init(|| {
- cnt.fetch_add(1, SeqCst);
- val
- }),
- val
- );
- assert_eq!(cnt.load(SeqCst), 1);
- });
- });
- assert_eq!(cell.get(), Some(val));
- assert_eq!(cnt.load(SeqCst), 1);
-}
-
-#[test]
-fn once_non_zero_usize_set() {
- let val1 = NonZeroUsize::new(92).unwrap();
- let val2 = NonZeroUsize::new(62).unwrap();
-
- let cell = OnceNonZeroUsize::new();
-
- assert!(cell.set(val1).is_ok());
- assert_eq!(cell.get(), Some(val1));
-
- assert!(cell.set(val2).is_err());
- assert_eq!(cell.get(), Some(val1));
-}
-
-#[cfg(feature = "std")]
-#[test]
-fn once_non_zero_usize_first_wins() {
- let val1 = NonZeroUsize::new(92).unwrap();
- let val2 = NonZeroUsize::new(62).unwrap();
-
- let cell = OnceNonZeroUsize::new();
-
- let b1 = Barrier::new(2);
- let b2 = Barrier::new(2);
- let b3 = Barrier::new(2);
- scope(|s| {
- s.spawn(|| {
- let r1 = cell.get_or_init(|| {
- b1.wait();
- b2.wait();
- val1
- });
- assert_eq!(r1, val1);
- b3.wait();
- });
- b1.wait();
- s.spawn(|| {
- let r2 = cell.get_or_init(|| {
- b2.wait();
- b3.wait();
- val2
- });
- assert_eq!(r2, val1);
- });
- });
-
- assert_eq!(cell.get(), Some(val1));
-}
-
-#[test]
-fn once_bool_smoke_test() {
- let cnt = AtomicUsize::new(0);
- let cell = OnceBool::new();
- scope(|s| {
- s.spawn(|| {
- assert_eq!(
- cell.get_or_init(|| {
- cnt.fetch_add(1, SeqCst);
- false
- }),
- false
- );
- assert_eq!(cnt.load(SeqCst), 1);
-
- assert_eq!(
- cell.get_or_init(|| {
- cnt.fetch_add(1, SeqCst);
- false
- }),
- false
- );
- assert_eq!(cnt.load(SeqCst), 1);
- });
- });
- assert_eq!(cell.get(), Some(false));
- assert_eq!(cnt.load(SeqCst), 1);
-}
-
-#[test]
-fn once_bool_set() {
- let cell = OnceBool::new();
-
- assert!(cell.set(false).is_ok());
- assert_eq!(cell.get(), Some(false));
-
- assert!(cell.set(true).is_err());
- assert_eq!(cell.get(), Some(false));
-}