summaryrefslogtreecommitdiffstats
path: root/grep
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2016-08-05 00:10:58 -0400
committerAndrew Gallant <jamslam@gmail.com>2016-08-05 00:10:58 -0400
commit076eeff3eaa76700e0ce8a4835c26aca46726bd0 (patch)
treef57f734ed8a67ccc6d5aa8ce080003893fcf8a31 /grep
parenta3f609222ce3c0057aca79d25b69dad482a816f7 (diff)
update
Diffstat (limited to 'grep')
-rw-r--r--grep/src/search.rs20
1 files changed, 16 insertions, 4 deletions
diff --git a/grep/src/search.rs b/grep/src/search.rs
index 915acf83..e54a4b22 100644
--- a/grep/src/search.rs
+++ b/grep/src/search.rs
@@ -366,7 +366,6 @@ impl<'g, R: io::Read> GrepBuffered<'g, R> {
let nread = try!(self.rdr.read(&mut self.b.buf[self.b.tmp.len()..]));
// Now update our various positions.
self.pos += self.start;
- println!("start: {:?}, pos: {:?}", self.start, self.pos);
self.start = 0;
// The end is the total number of bytes read plus whatever we had for
// leftovers.
@@ -460,18 +459,31 @@ fn s(bytes: &[u8]) -> String {
mod tests {
#![allow(unused_imports)]
+ use memchr::{memchr, memrchr};
+ use regex::bytes::Regex;
+
use super::{Buffer, GrepBuilder, s};
static SHERLOCK: &'static [u8] = include_bytes!("./data/sherlock.txt");
#[test]
fn buffered() {
+ // Find the expected number of matches and the position of the last
+ // match.
+ let re = Regex::new("Sherlock Holmes").unwrap();
+ let ms: Vec<_> = re.find_iter(SHERLOCK).collect();
+ let expected_count = ms.len();
+ let (start, end) = *ms.last().unwrap();
+ let start = memrchr(b'\n', &SHERLOCK[..start]).unwrap() + 1;
+ let end = memchr(b'\n', &SHERLOCK[end..]).unwrap() + end;
+
+ // Now compare it with what Grep finds.
let g = GrepBuilder::new("Sherlock Holmes").create().unwrap();
let mut bg = g.buffered_reader(Buffer::new(), SHERLOCK);
let ms: Vec<_> = bg.iter().map(|r| r.unwrap()).collect();
let m = ms.last().unwrap();
- assert_eq!(91, ms.len());
- assert_eq!(575707, m.start());
- assert_eq!(575784, m.end());
+ assert_eq!(expected_count, ms.len());
+ assert_eq!(start, m.start());
+ assert_eq!(end, m.end());
}
}