]> git.lizzy.rs Git - rust.git/blob - src/librustc_index/vec/tests.rs
Rollup merge of #68424 - estebank:suggest-borrow-for-non-copy-vec, r=davidtwco
[rust.git] / src / librustc_index / 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 }