1 #![allow(bad_style)]
2 #![allow(clippy::redundant_clone)]
3 
4 use std::iter::FromIterator;
5 use tinyvec::*;
6 
7 #[test]
TinyVec_swap_remove()8 fn TinyVec_swap_remove() {
9   let mut tv: TinyVec<[i32; 10]> = Default::default();
10   tv.push(1);
11   tv.push(2);
12   tv.push(3);
13   tv.push(4);
14   assert_eq!(tv.swap_remove(3), 4);
15   assert_eq!(&tv[..], &[1, 2, 3][..]);
16   assert_eq!(tv.swap_remove(0), 1);
17   assert_eq!(&tv[..], &[3, 2][..]);
18   assert_eq!(tv.swap_remove(0), 3);
19   assert_eq!(&tv[..], &[2][..]);
20   assert_eq!(tv.swap_remove(0), 2);
21   assert_eq!(&tv[..], &[][..]);
22 }
23 
24 #[test]
TinyVec_capacity()25 fn TinyVec_capacity() {
26   let mut tv: TinyVec<[i32; 1]> = Default::default();
27   assert_eq!(tv.capacity(), 1);
28   tv.move_to_the_heap();
29   tv.extend_from_slice(&[1, 2, 3, 4]);
30   assert_eq!(tv.capacity(), 4);
31 }
32 
33 #[test]
TinyVec_drain()34 fn TinyVec_drain() {
35   let mut tv: TinyVec<[i32; 10]> = Default::default();
36   tv.push(1);
37   tv.push(2);
38   tv.push(3);
39 
40   assert_eq!(Vec::from_iter(tv.clone().drain(..)), vec![1, 2, 3]);
41 
42   assert_eq!(Vec::from_iter(tv.clone().drain(..2)), vec![1, 2]);
43   assert_eq!(Vec::from_iter(tv.clone().drain(..3)), vec![1, 2, 3]);
44 
45   assert_eq!(Vec::from_iter(tv.clone().drain(..=1)), vec![1, 2]);
46   assert_eq!(Vec::from_iter(tv.clone().drain(..=2)), vec![1, 2, 3]);
47 
48   assert_eq!(Vec::from_iter(tv.clone().drain(0..)), vec![1, 2, 3]);
49   assert_eq!(Vec::from_iter(tv.clone().drain(1..)), vec![2, 3]);
50 
51   assert_eq!(Vec::from_iter(tv.clone().drain(0..2)), vec![1, 2]);
52   assert_eq!(Vec::from_iter(tv.clone().drain(0..3)), vec![1, 2, 3]);
53   assert_eq!(Vec::from_iter(tv.clone().drain(1..2)), vec![2]);
54   assert_eq!(Vec::from_iter(tv.clone().drain(1..3)), vec![2, 3]);
55 
56   assert_eq!(Vec::from_iter(tv.clone().drain(0..=1)), vec![1, 2]);
57   assert_eq!(Vec::from_iter(tv.clone().drain(0..=2)), vec![1, 2, 3]);
58   assert_eq!(Vec::from_iter(tv.clone().drain(1..=1)), vec![2]);
59   assert_eq!(Vec::from_iter(tv.clone().drain(1..=2)), vec![2, 3]);
60 }
61 
62 #[test]
TinyVec_resize()63 fn TinyVec_resize() {
64   let mut tv: TinyVec<[i32; 10]> = Default::default();
65   tv.resize(20, 5);
66   assert_eq!(&tv[..], &[5; 20]);
67 }
68 
69 #[test]
TinyVec_from_slice_impl()70 fn TinyVec_from_slice_impl() {
71   let bigger_slice: [u8; 11] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
72   let tinyvec: TinyVec<[u8; 10]> = TinyVec::Heap((&bigger_slice[..]).into());
73   assert_eq!(TinyVec::from(&bigger_slice[..]), tinyvec);
74 
75   let smaller_slice: [u8; 5] = [0, 1, 2, 3, 4];
76   let tinyvec: TinyVec<[u8; 10]> = TinyVec::Inline(ArrayVec::from_array_len(
77     [0, 1, 2, 3, 4, 0, 0, 0, 0, 0],
78     5,
79   ));
80   assert_eq!(TinyVec::from(&smaller_slice[..]), tinyvec);
81 
82   let same_size: [u8; 4] = [0, 1, 2, 3];
83   let tinyvec: TinyVec<[u8; 4]> =
84     TinyVec::Inline(ArrayVec::from_array_len(same_size, 4));
85   assert_eq!(TinyVec::from(&same_size[..]), tinyvec);
86 }
87 
88 #[test]
TinyVec_from_array()89 fn TinyVec_from_array() {
90   let array = [9, 8, 7, 6, 5, 4, 3, 2, 1];
91   let tv = TinyVec::from(array);
92   assert_eq!(&array, &tv[..]);
93 }
94