[flag]
enum BfPermission {
	read
	write
	execute
	other
}

struct BfFile {
mut:
	perm BfPermission
}

fn test_enum_bitfield() {
	mut a := BfFile{}
	a.perm.set(.read)
	a.perm.set(.write)
	a.perm.toggle(.execute)
	a.perm.clear(.write)
	//a.perm.set(.other)

	assert a.perm.has(.read)
	assert a.perm.has(.execute)
	assert !a.perm.has(.write)
	assert !a.perm.has(.other)

	mut b := BfPermission.read // TODO:  this does nothing currenty just sets the type
	b.set(.write)
	b.set(.other)
	assert b.has(.write)
	assert b.has(.other)
	assert !b.has(.read)
	assert !b.has(.execute)
}
