]> git.lizzy.rs Git - rust.git/blob - library/std/src/sys_common/thread_local_key/tests.rs
Rollup merge of #98364 - RalfJung:arc-clone, r=Mark-Simulacrum
[rust.git] / library / std / src / sys_common / thread_local_key / tests.rs
1 use super::{Key, StaticKey};
2
3 fn assert_sync<T: Sync>() {}
4 fn assert_send<T: Send>() {}
5
6 #[test]
7 fn smoke() {
8     assert_sync::<Key>();
9     assert_send::<Key>();
10
11     let k1 = Key::new(None);
12     let k2 = Key::new(None);
13     assert!(k1.get().is_null());
14     assert!(k2.get().is_null());
15     k1.set(1 as *mut _);
16     k2.set(2 as *mut _);
17     assert_eq!(k1.get() as usize, 1);
18     assert_eq!(k2.get() as usize, 2);
19 }
20
21 #[test]
22 fn statik() {
23     static K1: StaticKey = StaticKey::new(None);
24     static K2: StaticKey = StaticKey::new(None);
25
26     unsafe {
27         assert!(K1.get().is_null());
28         assert!(K2.get().is_null());
29         K1.set(1 as *mut _);
30         K2.set(2 as *mut _);
31         assert_eq!(K1.get() as usize, 1);
32         assert_eq!(K2.get() as usize, 2);
33     }
34 }