Skip to content

Commit c5e3081

Browse files
committed
move std tests to tests/std.rs
1 parent 91fa732 commit c5e3081

2 files changed

Lines changed: 187 additions & 27 deletions

File tree

tests/simple.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -100,30 +100,3 @@ fn test_from_str() {
100100
"test".as_bytes()
101101
);
102102
}
103-
104-
#[cfg(feature = "std")]
105-
#[test]
106-
fn test_drain() {
107-
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
108-
109-
let drain = hv.drain(1..4);
110-
assert_eq!(drain.as_slice(), [2, 3, 4]);
111-
drop(drain);
112-
assert_eq!(hv.as_slice(), [1, 5, 6]);
113-
}
114-
115-
#[cfg(feature = "std")]
116-
#[test]
117-
fn test_extend() {
118-
let mut hv = HeaderVec::new(());
119-
hv.extend([1, 2, 3]);
120-
assert_eq!(hv.as_slice(), [1, 2, 3]);
121-
}
122-
123-
#[cfg(feature = "std")]
124-
#[test]
125-
fn test_extend_ref() {
126-
let mut hv = HeaderVec::<(), i32>::new(());
127-
hv.extend([&1, &2, &3]);
128-
assert_eq!(hv.as_slice(), [1, 2, 3]);
129-
}

tests/std.rs

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
//! Tests for the `std` feature of the `header_vec` crate.
2+
#![cfg(feature = "std")]
3+
4+
use header_vec::*;
5+
6+
#[test]
7+
fn test_extend() {
8+
let mut hv = HeaderVec::new(());
9+
hv.extend([1, 2, 3]);
10+
assert_eq!(hv.as_slice(), [1, 2, 3]);
11+
}
12+
13+
#[test]
14+
fn test_extend_ref() {
15+
let mut hv = HeaderVec::<(), i32>::new(());
16+
hv.extend([&1, &2, &3]);
17+
assert_eq!(hv.as_slice(), [1, 2, 3]);
18+
}
19+
20+
#[test]
21+
fn test_drain() {
22+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
23+
24+
let drain = hv.drain(1..4);
25+
assert_eq!(drain.as_slice(), [2, 3, 4]);
26+
drop(drain);
27+
assert_eq!(hv.as_slice(), [1, 5, 6]);
28+
}
29+
30+
#[test]
31+
fn test_splice_nop() {
32+
// drain at begin
33+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
34+
35+
let splice = hv.splice(0..0, []);
36+
37+
assert_eq!(splice.drained_slice(), []);
38+
drop(splice);
39+
assert_eq!(hv.as_slice(), [1, 2, 3, 4, 5, 6]);
40+
41+
// drain inbetween
42+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
43+
44+
let splice = hv.splice(3..3, []);
45+
46+
assert_eq!(splice.drained_slice(), []);
47+
drop(splice);
48+
assert_eq!(hv.as_slice(), [1, 2, 3, 4, 5, 6]);
49+
50+
// drain at end
51+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
52+
53+
let splice = hv.splice(6..6, []);
54+
55+
assert_eq!(splice.drained_slice(), []);
56+
drop(splice);
57+
assert_eq!(hv.as_slice(), [1, 2, 3, 4, 5, 6]);
58+
}
59+
60+
#[test]
61+
fn test_splice_insert() {
62+
// drain at begin
63+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
64+
65+
let splice = hv.splice(..0, [-2, -1, 0]);
66+
67+
assert_eq!(splice.drained_slice(), []);
68+
drop(splice);
69+
assert_eq!(hv.as_slice(), [-2, -1, 0, 1, 2, 3, 4, 5, 6]);
70+
71+
// drain inbetween
72+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
73+
74+
let splice = hv.splice(3..3, [31, 32, 33]);
75+
76+
assert_eq!(splice.drained_slice(), []);
77+
drop(splice);
78+
assert_eq!(hv.as_slice(), [1, 2, 3, 31, 32, 33, 4, 5, 6]);
79+
80+
// drain at end
81+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
82+
83+
let splice = hv.splice(6.., [7, 8, 9]);
84+
85+
assert_eq!(splice.drained_slice(), []);
86+
drop(splice);
87+
assert_eq!(hv.as_slice(), [1, 2, 3, 4, 5, 6, 7, 8, 9]);
88+
}
89+
90+
#[test]
91+
fn test_splice_remove() {
92+
// drain at begin
93+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
94+
95+
let splice = hv.splice(..2, []);
96+
97+
assert_eq!(splice.drained_slice(), [1, 2]);
98+
drop(splice);
99+
assert_eq!(hv.as_slice(), [3, 4, 5, 6]);
100+
101+
// drain inbetween
102+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
103+
104+
let splice = hv.splice(3..5, []);
105+
106+
assert_eq!(splice.drained_slice(), [4, 5]);
107+
drop(splice);
108+
assert_eq!(hv.as_slice(), [1, 2, 3, 6]);
109+
110+
// drain at end
111+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
112+
113+
let splice = hv.splice(4.., []);
114+
115+
assert_eq!(splice.drained_slice(), [5, 6]);
116+
drop(splice);
117+
assert_eq!(hv.as_slice(), [1, 2, 3, 4]);
118+
119+
// drain all
120+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
121+
122+
let splice = hv.splice(.., []);
123+
124+
assert_eq!(splice.drained_slice(), [1, 2, 3, 4, 5, 6]);
125+
drop(splice);
126+
assert_eq!(hv.as_slice(), []);
127+
}
128+
129+
#[test]
130+
fn test_splice_replace() {
131+
// same length
132+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
133+
134+
let splice = hv.splice(3..5, [44, 55]);
135+
136+
assert_eq!(splice.drained_slice(), [4, 5]);
137+
drop(splice);
138+
assert_eq!(hv.as_slice(), [1, 2, 3, 44, 55, 6]);
139+
140+
// shorter
141+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
142+
143+
let splice = hv.splice(3..5, [44]);
144+
145+
assert_eq!(splice.drained_slice(), [4, 5]);
146+
drop(splice);
147+
assert_eq!(hv.as_slice(), [1, 2, 3, 44, 6]);
148+
149+
// longer
150+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
151+
152+
let splice = hv.splice(4..5, [44, 55]);
153+
154+
assert_eq!(splice.drained_slice(), [5]);
155+
drop(splice);
156+
assert_eq!(hv.as_slice(), [1, 2, 3, 4, 44, 55, 6]);
157+
158+
// longer than tail
159+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
160+
161+
let splice = hv.splice(3..5, [44, 55, 56, 57, 58, 59]);
162+
163+
assert_eq!(splice.drained_slice(), [4, 5]);
164+
drop(splice);
165+
assert_eq!(hv.as_slice(), [1, 2, 3, 44, 55, 56, 57, 58, 59, 6]);
166+
167+
// all
168+
let mut hv = HeaderVec::from_header_slice((), [1, 2, 3, 4, 5, 6]);
169+
170+
let splice = hv.splice(.., [11, 22, 33]);
171+
172+
assert_eq!(splice.drained_slice(), [1, 2, 3, 4, 5, 6]);
173+
drop(splice);
174+
assert_eq!(hv.as_slice(), [11, 22, 33]);
175+
}
176+
177+
// #[test]
178+
// fn test_splice_zst() {
179+
// // same length
180+
// let mut hv = HeaderVec::from_header_slice((), [(),(),(),(),(),()]);
181+
//
182+
// // let splice = hv.splice(3..5, [(),()]);
183+
// //
184+
// // assert_eq!(splice.drained_slice(), [(),()]);
185+
// // drop(splice);
186+
// // assert_eq!(hv.as_slice(), [(),(),(),(),(),()]);
187+
// }

0 commit comments

Comments
 (0)