/*
* The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
* (the "License"). You may not use this work except in compliance with the License, which is
* available at www.apache.org/licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied, as more fully set forth in the License.
*
* See the NOTICE file distributed with this work for information regarding copyright ownership.
*/
package alluxio.security.authorization;
import org.junit.Assert;
import org.junit.Test;
/**
* Tests the {@link Mode.Bits} class.
*/
public final class ModeBitsTest {
/**
* Tests the {@link Mode.Bits#toString()} method.
*/
@Test
public void getSymbol() {
Assert.assertEquals("---", Mode.Bits.NONE.toString());
Assert.assertEquals("r--", Mode.Bits.READ.toString());
Assert.assertEquals("-w-", Mode.Bits.WRITE.toString());
Assert.assertEquals("--x", Mode.Bits.EXECUTE.toString());
Assert.assertEquals("rw-", Mode.Bits.READ_WRITE.toString());
Assert.assertEquals("r-x", Mode.Bits.READ_EXECUTE.toString());
Assert.assertEquals("-wx", Mode.Bits.WRITE_EXECUTE.toString());
Assert.assertEquals("rwx", Mode.Bits.ALL.toString());
}
/**
* Tests the {@link Mode.Bits#imply(Mode.Bits)} method.
*/
@Test
public void implies() {
Assert.assertTrue(Mode.Bits.ALL.imply(Mode.Bits.READ));
Assert.assertTrue(Mode.Bits.ALL.imply(Mode.Bits.WRITE));
Assert.assertTrue(Mode.Bits.ALL.imply(Mode.Bits.EXECUTE));
Assert.assertTrue(Mode.Bits.ALL.imply(Mode.Bits.READ_EXECUTE));
Assert.assertTrue(Mode.Bits.ALL.imply(Mode.Bits.WRITE_EXECUTE));
Assert.assertTrue(Mode.Bits.ALL.imply(Mode.Bits.ALL));
Assert.assertTrue(Mode.Bits.READ_EXECUTE.imply(Mode.Bits.READ));
Assert.assertTrue(Mode.Bits.READ_EXECUTE.imply(Mode.Bits.EXECUTE));
Assert.assertFalse(Mode.Bits.READ_EXECUTE.imply(Mode.Bits.WRITE));
Assert.assertTrue(Mode.Bits.WRITE_EXECUTE.imply(Mode.Bits.WRITE));
Assert.assertTrue(Mode.Bits.WRITE_EXECUTE.imply(Mode.Bits.EXECUTE));
Assert.assertFalse(Mode.Bits.WRITE_EXECUTE.imply(Mode.Bits.READ));
Assert.assertTrue(Mode.Bits.READ_WRITE.imply(Mode.Bits.WRITE));
Assert.assertTrue(Mode.Bits.READ_WRITE.imply(Mode.Bits.READ));
Assert.assertFalse(Mode.Bits.READ_WRITE.imply(Mode.Bits.EXECUTE));
}
/**
* Tests the {@link Mode.Bits#not()} method.
*/
@Test
public void notOperation() {
Assert.assertEquals(Mode.Bits.WRITE, Mode.Bits.READ_EXECUTE.not());
Assert.assertEquals(Mode.Bits.READ, Mode.Bits.WRITE_EXECUTE.not());
Assert.assertEquals(Mode.Bits.EXECUTE, Mode.Bits.READ_WRITE.not());
}
/**
* Tests the {@link Mode.Bits#or(Mode.Bits)} method.
*/
@Test
public void orOperation() {
Assert.assertEquals(Mode.Bits.WRITE_EXECUTE, Mode.Bits.WRITE.or(Mode.Bits.EXECUTE));
Assert.assertEquals(Mode.Bits.READ_EXECUTE, Mode.Bits.READ.or(Mode.Bits.EXECUTE));
Assert.assertEquals(Mode.Bits.READ_WRITE, Mode.Bits.WRITE.or(Mode.Bits.READ));
}
/**
* Tests the {@link Mode.Bits#and(Mode.Bits)} method.
*/
@Test
public void andOperation() {
Assert.assertEquals(Mode.Bits.NONE, Mode.Bits.READ.and(Mode.Bits.WRITE));
Assert.assertEquals(Mode.Bits.READ, Mode.Bits.READ_EXECUTE.and(Mode.Bits.READ));
Assert.assertEquals(Mode.Bits.WRITE, Mode.Bits.READ_WRITE.and(Mode.Bits.WRITE));
}
}