]> git.proxmox.com Git - rustc.git/blob - compiler/rustc_index/src/vec/tests.rs
New upstream version 1.48.0~beta.8+dfsg1
[rustc.git] / compiler / rustc_index / src / vec / tests.rs
1 #![allow(dead_code)]
2 newtype_index!(struct MyIdx { MAX = 0xFFFF_FFFA });
3
4 #[test]
5 fn index_size_is_optimized() {
6 use std::mem::size_of;
7
8 assert_eq!(size_of::<MyIdx>(), 4);
9 // Uses 0xFFFF_FFFB
10 assert_eq!(size_of::<Option<MyIdx>>(), 4);
11 // Uses 0xFFFF_FFFC
12 assert_eq!(size_of::<Option<Option<MyIdx>>>(), 4);
13 // Uses 0xFFFF_FFFD
14 assert_eq!(size_of::<Option<Option<Option<MyIdx>>>>(), 4);
15 // Uses 0xFFFF_FFFE
16 assert_eq!(size_of::<Option<Option<Option<Option<MyIdx>>>>>(), 4);
17 // Uses 0xFFFF_FFFF
18 assert_eq!(size_of::<Option<Option<Option<Option<Option<MyIdx>>>>>>(), 4);
19 // Uses a tag
20 assert_eq!(size_of::<Option<Option<Option<Option<Option<Option<MyIdx>>>>>>>(), 8);
21 }
22
23 #[test]
24 fn range_iterator_iterates_forwards() {
25 let range = MyIdx::from_u32(1)..MyIdx::from_u32(4);
26 assert_eq!(
27 range.collect::<Vec<_>>(),
28 [MyIdx::from_u32(1), MyIdx::from_u32(2), MyIdx::from_u32(3)]
29 );
30 }
31
32 #[test]
33 fn range_iterator_iterates_backwards() {
34 let range = MyIdx::from_u32(1)..MyIdx::from_u32(4);
35 assert_eq!(
36 range.rev().collect::<Vec<_>>(),
37 [MyIdx::from_u32(3), MyIdx::from_u32(2), MyIdx::from_u32(1)]
38 );
39 }
40
41 #[test]
42 fn range_count_is_correct() {
43 let range = MyIdx::from_u32(1)..MyIdx::from_u32(4);
44 assert_eq!(range.count(), 3);
45 }
46
47 #[test]
48 fn range_size_hint_is_correct() {
49 let range = MyIdx::from_u32(1)..MyIdx::from_u32(4);
50 assert_eq!(range.size_hint(), (3, Some(3)));
51 }