from pathlib import Path
assert Path('/virtual/file.txt').exists() == True
assert Path('/virtual/subdir').exists() == True
assert Path('/virtual/subdir/deep').exists() == True
assert Path('/nonexistent').exists() == False
assert Path('/nonexistent/file.txt').exists() == False
assert Path('/virtual/file.txt').is_file() == True
assert Path('/virtual/subdir').is_file() == False
assert Path('/nonexistent').is_file() == False
assert Path('/virtual/subdir').is_dir() == True
assert Path('/virtual/file.txt').is_dir() == False
assert Path('/nonexistent').is_dir() == False
assert Path('/virtual/file.txt').is_symlink() == False
assert Path('/nonexistent').is_symlink() == False
assert Path('/virtual/file.txt').read_text() == 'hello world\n'
assert Path('/virtual/empty.txt').read_text() == ''
assert Path('/virtual/subdir/nested.txt').read_text() == 'nested content'
assert Path('/virtual/subdir/deep/file.txt').read_text() == 'deep'
assert Path('/virtual/data.bin').read_bytes() == b'\x00\x01\x02\x03'
assert Path('/virtual/empty.txt').read_bytes() == b''
assert Path('/virtual/file.txt').read_bytes() == b'hello world\n'
st = Path('/virtual/file.txt').stat()
assert st.st_size == 12
assert st.st_mode & 0o777 == 0o644
assert st.st_mode & 0o170000 == 0o100000
st_dir = Path('/virtual/subdir').stat()
assert st_dir.st_mode & 0o170000 == 0o040000
assert st_dir.st_mode & 0o777 == 0o755
st2 = Path('/virtual/file.txt').stat()
assert st2[6] == 12
assert st2[0] & 0o777 == 0o644
entries = list(Path('/virtual').iterdir())
assert len(entries) == 5
first_entry = entries[0]
assert isinstance(first_entry, Path), f'iterdir should return Path objects, got {type(first_entry)}'
names = [e.name for e in entries]
assert 'file.txt' in names
assert 'subdir' in names
assert 'data.bin' in names
assert entries[0].parent == Path('/virtual')
nested_entries = list(Path('/virtual/subdir').iterdir())
assert len(nested_entries) == 2
nested_names = [e.name for e in nested_entries]
assert 'nested.txt' in nested_names
assert 'deep' in nested_names
for entry in nested_entries:
if entry.name == 'nested.txt':
assert entry.read_text() == 'nested content'
p = Path('/virtual/file.txt').resolve()
assert str(p) == '/virtual/file.txt'
p2 = Path('/virtual/subdir').absolute()
assert str(p2) == '/virtual/subdir'
base = Path('/virtual')
full = base / 'subdir' / 'nested.txt'
assert full.read_text() == 'nested content'
assert full.exists() == True
Path('/virtual/new_file.txt').write_text('created by write_text')
assert Path('/virtual/new_file.txt').read_text() == 'created by write_text'
Path('/virtual/file.txt').write_text('overwritten')
assert Path('/virtual/file.txt').read_text() == 'overwritten'
Path('/virtual/binary.dat').write_bytes(b'\xff\xfe\xfd')
assert Path('/virtual/binary.dat').read_bytes() == b'\xff\xfe\xfd'
Path('/virtual/new_dir').mkdir()
assert Path('/virtual/new_dir').is_dir() == True
Path('/virtual/a/b/c').mkdir(parents=True)
assert Path('/virtual/a/b/c').is_dir() == True
Path('/virtual/new_dir').mkdir(exist_ok=True) try:
Path('/virtual/new_dir').mkdir(exist_ok='')
assert False, "mkdir(exist_ok='') should raise (empty string is falsy)"
except OSError as exc:
assert isinstance(exc, FileExistsError), f'expected FileExistsError, got {type(exc).__name__}'
try:
Path('/virtual/x/y/z').mkdir(parents=b'')
assert False, "mkdir(parents=b'') should raise when parents missing"
except OSError as exc:
assert isinstance(exc, FileNotFoundError), f'expected FileNotFoundError, got {type(exc).__name__}'
try:
Path('/virtual/x/y/z').mkdir(parents=[])
assert False, 'mkdir(parents=[]) should raise when parents missing'
except OSError as exc:
assert isinstance(exc, FileNotFoundError), f'expected FileNotFoundError, got {type(exc).__name__}'
Path('/virtual/p/q/r').mkdir(parents='yes')
assert Path('/virtual/p/q/r').is_dir() == True
Path('/virtual/new_dir').mkdir(exist_ok=[0])
Path('/virtual/to_delete.txt').write_text('delete me')
assert Path('/virtual/to_delete.txt').exists() == True
Path('/virtual/to_delete.txt').unlink()
assert Path('/virtual/to_delete.txt').exists() == False
Path('/virtual/empty_dir').mkdir()
assert Path('/virtual/empty_dir').is_dir() == True
Path('/virtual/empty_dir').rmdir()
assert Path('/virtual/empty_dir').exists() == False
Path('/virtual/old_name.txt').write_text('rename test')
Path('/virtual/old_name.txt').rename(Path('/virtual/new_name.txt'))
assert Path('/virtual/old_name.txt').exists() == False
assert Path('/virtual/new_name.txt').read_text() == 'rename test'