summaryrefslogtreecommitdiff
path: root/std/wasi/testdata/std_fs_file_seek.rs
blob: 1e2a9d7def16480431501c4bec7cbd56508c1e84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// { "preopens": { "/fixture": "fixture" } }

use std::io::Seek;

fn main() {
  let mut file = std::fs::File::open("/fixture/file").unwrap();
  assert_eq!(file.seek(std::io::SeekFrom::Current(0)).unwrap(), 0);

  assert_eq!(file.seek(std::io::SeekFrom::Start(1)).unwrap(), 1);
  assert_eq!(file.seek(std::io::SeekFrom::Start(2)).unwrap(), 2);
  assert_eq!(file.seek(std::io::SeekFrom::Start(3)).unwrap(), 3);
  assert_eq!(file.seek(std::io::SeekFrom::Start(4)).unwrap(), 4);
  assert_eq!(file.seek(std::io::SeekFrom::Start(5)).unwrap(), 5);

  assert_eq!(file.seek(std::io::SeekFrom::Current(-1)).unwrap(), 4);
  assert_eq!(file.seek(std::io::SeekFrom::Current(-1)).unwrap(), 3);
  assert_eq!(file.seek(std::io::SeekFrom::Current(-1)).unwrap(), 2);
  assert_eq!(file.seek(std::io::SeekFrom::Current(-1)).unwrap(), 1);
  assert_eq!(file.seek(std::io::SeekFrom::Current(-1)).unwrap(), 0);

  assert_eq!(file.seek(std::io::SeekFrom::Current(1)).unwrap(), 1);
  assert_eq!(file.seek(std::io::SeekFrom::Current(1)).unwrap(), 2);
  assert_eq!(file.seek(std::io::SeekFrom::Current(1)).unwrap(), 3);
  assert_eq!(file.seek(std::io::SeekFrom::Current(1)).unwrap(), 4);
  assert_eq!(file.seek(std::io::SeekFrom::Current(1)).unwrap(), 5);

  assert_eq!(file.seek(std::io::SeekFrom::End(0)).unwrap(), 5);
  assert_eq!(file.seek(std::io::SeekFrom::End(-1)).unwrap(), 4);
  assert_eq!(file.seek(std::io::SeekFrom::End(-2)).unwrap(), 3);
  assert_eq!(file.seek(std::io::SeekFrom::End(-3)).unwrap(), 2);
  assert_eq!(file.seek(std::io::SeekFrom::End(-4)).unwrap(), 1);
  assert_eq!(file.seek(std::io::SeekFrom::End(-5)).unwrap(), 0);
}