import {strict as assert} from 'assert';
import { Enumify } from '../enumify';

class Mode extends Enumify {
  static user_r = new Mode(0b100000000);
  static user_w = new Mode(0b010000000);
  static user_x = new Mode(0b001000000);
  static group_r = new Mode(0b000100000);
  static group_w = new Mode(0b000010000);
  static group_x = new Mode(0b000001000);
  static all_r = new Mode(0b000000100);
  static all_w = new Mode(0b000000010);
  static all_x = new Mode(0b000000001);
  
  static() {
    Mode.closeEnum();
  }

  constructor(public n: any) {
    super();
  }
}
assert.equal(
  Mode.user_r.n | Mode.user_w.n | Mode.user_x.n | Mode.group_r.n | Mode.group_x.n | Mode.all_r.n | Mode.all_x.n,
  0o755
);
assert.equal(Mode.user_r.n | Mode.user_w.n | Mode.user_x.n | Mode.group_r.n, 0o740);
