Skip to content

Commit a7ac554

Browse files
committed
---
yaml --- r: 78689 b: refs/heads/try c: ece709f h: refs/heads/master i: 78687: f6daa20 v: v3
1 parent 1153f55 commit a7ac554

File tree

2 files changed

+72
-2
lines changed

2 files changed

+72
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 25ed29a0edb3d48fef843a0b818ee68faf2252da
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 60fba4d7d677ec098e6a43014132fe99f7547363
5-
refs/heads/try: 320ccbeb53b711282be6a11623df45c789925059
5+
refs/heads/try: ece709f172d180471d59a17bb92aa0c3f3ca25d7
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c

branches/try/src/libstd/rt/io/file.rs

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use prelude::*;
1212
use super::support::PathLike;
1313
use super::{Reader, Writer, Seek};
14-
use super::{SeekSet, SeekStyle};
14+
use super::{SeekSet, SeekCur, SeekEnd, SeekStyle};
1515
use rt::rtio::{RtioFileStream, IoFactory, IoFactoryObject};
1616
use rt::io::{io_error, read_error, EndOfFile};
1717
use rt::local::Local;
@@ -314,3 +314,73 @@ fn file_test_io_seeking_impl() {
314314
fn file_test_io_seek_and_tell_smoke_test() {
315315
file_test_io_seeking_impl();
316316
}
317+
318+
fn file_test_io_seek_and_write_impl() {
319+
use io;
320+
do run_in_newsched_task {
321+
use str;
322+
let initial_msg = "food-is-yummy";
323+
let overwrite_msg = "-the-bar!!";
324+
let final_msg = "foo-the-bar!!";
325+
let seek_idx = 3;
326+
let mut read_mem = [0, .. 13];
327+
let filename = &Path("./rt_io_file_test_seek_and_write.txt");
328+
{
329+
let mut rw_stream = FileStream::open(filename, Create, ReadWrite).unwrap();
330+
rw_stream.write(initial_msg.as_bytes());
331+
rw_stream.seek(seek_idx as i64, SeekSet);
332+
rw_stream.write(overwrite_msg.as_bytes());
333+
}
334+
{
335+
let mut read_stream = FileStream::open(filename, Open, Read).unwrap();
336+
read_stream.read(read_mem);
337+
}
338+
FileStream::unlink(filename);
339+
let read_str = str::from_bytes(read_mem);
340+
io::println(fmt!("read_str: '%?' final_msg: '%?'", read_str, final_msg));
341+
assert!(read_str == final_msg.to_owned());
342+
}
343+
}
344+
#[test]
345+
fn file_test_io_seek_and_write() {
346+
file_test_io_seek_and_write_impl();
347+
}
348+
349+
fn file_test_io_seek_shakedown_impl() {
350+
do run_in_newsched_task {
351+
use str; // 01234567890123
352+
let initial_msg = "qwer-asdf-zxcv";
353+
let chunk_one = "qwer";
354+
let chunk_two = "asdf";
355+
let chunk_three = "zxcv";
356+
let mut read_mem = [0, .. 4];
357+
let filename = &Path("./rt_io_file_test_seek_shakedown.txt");
358+
{
359+
let mut rw_stream = FileStream::open(filename, Create, ReadWrite).unwrap();
360+
rw_stream.write(initial_msg.as_bytes());
361+
}
362+
{
363+
let mut read_stream = FileStream::open(filename, Open, Read).unwrap();
364+
365+
read_stream.seek(-4, SeekEnd);
366+
read_stream.read(read_mem);
367+
let read_str = str::from_bytes(read_mem);
368+
assert!(read_str == chunk_three.to_owned());
369+
370+
read_stream.seek(-9, SeekCur);
371+
read_stream.read(read_mem);
372+
let read_str = str::from_bytes(read_mem);
373+
assert!(read_str == chunk_two.to_owned());
374+
375+
read_stream.seek(0, SeekSet);
376+
read_stream.read(read_mem);
377+
let read_str = str::from_bytes(read_mem);
378+
assert!(read_str == chunk_one.to_owned());
379+
}
380+
FileStream::unlink(filename);
381+
}
382+
}
383+
#[test]
384+
fn file_test_io_seek_shakedown() {
385+
file_test_io_seek_shakedown_impl();
386+
}

0 commit comments

Comments
 (0)