Skip to content

Commit 95c374e

Browse files
author
bors-servo
authored
Auto merge of #347 - jimblandy:move-bq-tests, r=jdm
markup5ever: Move BufferQueue tests into that module. The tests in the top-level `lib.rs` file of `markup5ever` exercise only `BufferQueue`, so it seems like it would be clearer for them to live in `util/buffer_queue.rs`.
2 parents d501238 + 4d0df38 commit 95c374e

File tree

2 files changed

+67
-68
lines changed

2 files changed

+67
-68
lines changed

markup5ever/lib.rs

-68
Original file line numberDiff line numberDiff line change
@@ -47,71 +47,3 @@ mod util {
4747
pub use util::*;
4848
pub use interface::{ExpandedName, QualName, Attribute};
4949
pub use util::smallcharset::SmallCharSet;
50-
51-
52-
53-
#[cfg(test)]
54-
#[allow(non_snake_case)]
55-
mod test {
56-
use tendril::SliceExt;
57-
58-
use super::util::buffer_queue::{BufferQueue, FromSet, NotFromSet};
59-
60-
#[test]
61-
fn smoke_test() {
62-
let mut bq = BufferQueue::new();
63-
assert_eq!(bq.peek(), None);
64-
assert_eq!(bq.next(), None);
65-
66-
bq.push_back("abc".to_tendril());
67-
assert_eq!(bq.peek(), Some('a'));
68-
assert_eq!(bq.next(), Some('a'));
69-
assert_eq!(bq.peek(), Some('b'));
70-
assert_eq!(bq.peek(), Some('b'));
71-
assert_eq!(bq.next(), Some('b'));
72-
assert_eq!(bq.peek(), Some('c'));
73-
assert_eq!(bq.next(), Some('c'));
74-
assert_eq!(bq.peek(), None);
75-
assert_eq!(bq.next(), None);
76-
}
77-
78-
#[test]
79-
fn can_unconsume() {
80-
let mut bq = BufferQueue::new();
81-
bq.push_back("abc".to_tendril());
82-
assert_eq!(bq.next(), Some('a'));
83-
84-
bq.push_front("xy".to_tendril());
85-
assert_eq!(bq.next(), Some('x'));
86-
assert_eq!(bq.next(), Some('y'));
87-
assert_eq!(bq.next(), Some('b'));
88-
assert_eq!(bq.next(), Some('c'));
89-
assert_eq!(bq.next(), None);
90-
}
91-
92-
#[test]
93-
fn can_pop_except_set() {
94-
let mut bq = BufferQueue::new();
95-
bq.push_back("abc&def".to_tendril());
96-
let mut pop = || bq.pop_except_from(small_char_set!('&'));
97-
assert_eq!(pop(), Some(NotFromSet("abc".to_tendril())));
98-
assert_eq!(pop(), Some(FromSet('&')));
99-
assert_eq!(pop(), Some(NotFromSet("def".to_tendril())));
100-
assert_eq!(pop(), None);
101-
}
102-
103-
#[test]
104-
fn can_eat() {
105-
// This is not very comprehensive. We rely on the tokenizer
106-
// integration tests for more thorough testing with many
107-
// different input buffer splits.
108-
let mut bq = BufferQueue::new();
109-
bq.push_back("a".to_tendril());
110-
bq.push_back("bc".to_tendril());
111-
assert_eq!(bq.eat("abcd", u8::eq_ignore_ascii_case), None);
112-
assert_eq!(bq.eat("ax", u8::eq_ignore_ascii_case), Some(false));
113-
assert_eq!(bq.eat("ab", u8::eq_ignore_ascii_case), Some(true));
114-
assert_eq!(bq.next(), Some('c'));
115-
assert_eq!(bq.next(), None);
116-
}
117-
}

markup5ever/util/buffer_queue.rs

+67
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,70 @@ impl BufferQueue {
230230
Some(true)
231231
}
232232
}
233+
234+
#[cfg(test)]
235+
#[allow(non_snake_case)]
236+
mod test {
237+
use tendril::SliceExt;
238+
239+
use super::BufferQueue;
240+
use super::SetResult::{FromSet, NotFromSet};
241+
242+
#[test]
243+
fn smoke_test() {
244+
let mut bq = BufferQueue::new();
245+
assert_eq!(bq.peek(), None);
246+
assert_eq!(bq.next(), None);
247+
248+
bq.push_back("abc".to_tendril());
249+
assert_eq!(bq.peek(), Some('a'));
250+
assert_eq!(bq.next(), Some('a'));
251+
assert_eq!(bq.peek(), Some('b'));
252+
assert_eq!(bq.peek(), Some('b'));
253+
assert_eq!(bq.next(), Some('b'));
254+
assert_eq!(bq.peek(), Some('c'));
255+
assert_eq!(bq.next(), Some('c'));
256+
assert_eq!(bq.peek(), None);
257+
assert_eq!(bq.next(), None);
258+
}
259+
260+
#[test]
261+
fn can_unconsume() {
262+
let mut bq = BufferQueue::new();
263+
bq.push_back("abc".to_tendril());
264+
assert_eq!(bq.next(), Some('a'));
265+
266+
bq.push_front("xy".to_tendril());
267+
assert_eq!(bq.next(), Some('x'));
268+
assert_eq!(bq.next(), Some('y'));
269+
assert_eq!(bq.next(), Some('b'));
270+
assert_eq!(bq.next(), Some('c'));
271+
assert_eq!(bq.next(), None);
272+
}
273+
274+
#[test]
275+
fn can_pop_except_set() {
276+
let mut bq = BufferQueue::new();
277+
bq.push_back("abc&def".to_tendril());
278+
let mut pop = || bq.pop_except_from(small_char_set!('&'));
279+
assert_eq!(pop(), Some(NotFromSet("abc".to_tendril())));
280+
assert_eq!(pop(), Some(FromSet('&')));
281+
assert_eq!(pop(), Some(NotFromSet("def".to_tendril())));
282+
assert_eq!(pop(), None);
283+
}
284+
285+
#[test]
286+
fn can_eat() {
287+
// This is not very comprehensive. We rely on the tokenizer
288+
// integration tests for more thorough testing with many
289+
// different input buffer splits.
290+
let mut bq = BufferQueue::new();
291+
bq.push_back("a".to_tendril());
292+
bq.push_back("bc".to_tendril());
293+
assert_eq!(bq.eat("abcd", u8::eq_ignore_ascii_case), None);
294+
assert_eq!(bq.eat("ax", u8::eq_ignore_ascii_case), Some(false));
295+
assert_eq!(bq.eat("ab", u8::eq_ignore_ascii_case), Some(true));
296+
assert_eq!(bq.next(), Some('c'));
297+
assert_eq!(bq.next(), None);
298+
}
299+
}

0 commit comments

Comments
 (0)