Skip to content

Commit 668b46b

Browse files
committed
---
yaml --- r: 144283 b: refs/heads/try2 c: ece709f h: refs/heads/master i: 144281: 44df59e 144279: 0cb06d6 v: v3
1 parent ab69887 commit 668b46b

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
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 320ccbeb53b711282be6a11623df45c789925059
8+
refs/heads/try2: ece709f172d180471d59a17bb92aa0c3f3ca25d7
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/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)