use std::fs;
use std::io::{Read, Seek, SeekFrom, Write};
use std::path::*;

fn main() {
    let mut path = PathBuf::from("wasitests/testing/nested/directories");
    let test_file = path.join("test.file");
    fs::create_dir_all(&path).unwrap();
    {
        let mut file = fs::OpenOptions::new()
            .read(true)
            .write(true)
            .truncate(true)
            .create(true)
            .open(&test_file)
            .unwrap();

        assert_eq!(file.write(b"hello").unwrap(), 5);

        file.flush().unwrap();
        file.seek(SeekFrom::Start(0)).unwrap();
        let mut in_str = String::new();
        file.read_to_string(&mut in_str).unwrap();
        assert_eq!(&in_str, "hello");
    }
    fs::remove_file(&test_file).unwrap();
    println!("Test file exists: {}", test_file.exists());
    assert!(!test_file.exists());
    for _ in 0..3 {
        fs::remove_dir_all(&path).unwrap();
        println!("Dir exists: {}", path.exists());
        assert!(!path.exists());
        path.pop();
    }

    println!("Success");
}
