35 lines
575 B
V
35 lines
575 B
V
|
[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)
|
||
|
}
|