Skip to content

Commit

Permalink
auto merge of #8081 : stepancheg/rust/each_byte, r=huonw
Browse files Browse the repository at this point in the history
Took a patch by @martine, and fixed a tests: replaced with_str_reader with file_reader, because with_str_reader seems not to reveal the problem.
  • Loading branch information
bors committed Jul 28, 2013
2 parents 5842ab3 + b92d1ea commit 293ec2c
Showing 1 changed file with 38 additions and 4 deletions.
42 changes: 38 additions & 4 deletions src/libstd/io.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,9 @@ pub trait Reader {
/**
* Returns a boolean value: are we currently at EOF?
*
* Note that stream position may be already at the end-of-file point,
* but `eof` returns false until an attempt to read at that position.
*
* `eof` is conceptually similar to C's `feof` function.
*
* # Examples
Expand Down Expand Up @@ -724,15 +727,21 @@ impl<T:Reader> ReaderUtil for T {
}

fn each_byte(&self, it: &fn(int) -> bool) -> bool {
while !self.eof() {
if !it(self.read_byte()) { return false; }
loop {
match self.read_byte() {
-1 => break,
ch => if !it(ch) { return false; }
}
}
return true;
}

fn each_char(&self, it: &fn(char) -> bool) -> bool {
while !self.eof() {
if !it(self.read_char()) { return false; }
loop {
match self.read_char() {
eof if eof == (-1 as char) => break,
ch => if !it(ch) { return false; }
}
}
return true;
}
Expand Down Expand Up @@ -1858,6 +1867,31 @@ mod tests {
assert_eq!(frood, frood2);
}

#[test]
fn test_each_byte_each_char_file() {
// Issue #5056 -- shouldn't include trailing EOF.
let path = Path("tmp/lib-io-test-each-byte-each-char-file.tmp");

{
// create empty, enough to reproduce a problem
io::file_writer(&path, [io::Create]).unwrap();
}

{
let file = io::file_reader(&path).unwrap();
for file.each_byte() |_| {
fail!("must be empty");
}
}

{
let file = io::file_reader(&path).unwrap();
for file.each_char() |_| {
fail!("must be empty");
}
}
}

#[test]
fn test_readchars_empty() {
do io::with_str_reader("") |inp| {
Expand Down

0 comments on commit 293ec2c

Please sign in to comment.