module std::io::bytebuffer @test;
import std::io;

fn void write_read()
{
	ByteBuffer buffer;
	buffer.init(mem, 0);
	defer buffer.free();
	buffer.write("hello")!!;

	char[8] bytes;
	usz n = buffer.read(bytes[..])!!;
	assert(n == 5);
	assert((String)bytes[:n] == "hello");

	buffer.write("hello world")!!;
	n = buffer.read(bytes[..])!!;
	assert(n == bytes.len);
	assert((String)bytes[:n] == "hello wo");
	assert(buffer.read_idx == 1);

	char c = buffer.read_byte()!!;
	assert(c == 'r');
	buffer.pushback_byte()!!;

	n = buffer.read(bytes[..])!!;
	assert((String)bytes[:n] == "rld");
	assert(buffer.read_idx == 1);
}