@Test public void testGetInstanceFromBase() { PrivilegeBits pb = PrivilegeBits.getInstance(READ_NODES_PRIVILEGE_BITS); pb.add(PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ_ACCESS_CONTROL)); pb.add(PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_NODE_TYPE_MANAGEMENT)); PrivilegeBits pb2 = PrivilegeBits.getInstance(READ_NODES_PRIVILEGE_BITS, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ_ACCESS_CONTROL), PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_NODE_TYPE_MANAGEMENT)); assertEquivalent(pb, pb2); }
@Test public void testLongValue() { // empty assertEquals(NO_PRIVILEGE, getLongValue(PrivilegeBits.EMPTY)); // long based privilege bits for (long l : LONGS) { PrivilegeBits bits = PrivilegeBits.getInstance(createPropertyState(l)); assertEquals(l, getLongValue(bits)); } // long based privilege bits PrivilegeBits pb = READ_NODES_PRIVILEGE_BITS; long l = getLongValue(pb); while (l < Long.MAX_VALUE / 2) { l = l << 1; pb = pb.nextBits(); assertEquals(l, getLongValue(pb)); } // other privilege bits: long value not available. for (int i = 0; i < 10; i++) { pb = pb.nextBits(); assertEquals(0, getLongValue(pb)); } // modifiable privilege bits pb = READ_NODES_PRIVILEGE_BITS; for (int i = 0; i < 100; i++) { PrivilegeBits modifiable = PrivilegeBits.getInstance(pb); assertEquals(getLongValue(pb), getLongValue(modifiable)); pb = pb.nextBits(); } }
@Test public void testGetInstanceFromPropertyState() { for (long l : LONGS) { PropertyState property = createPropertyState(l); PrivilegeBits pb = PrivilegeBits.getInstance(property); assertEquivalent(pb, PrivilegeBits.getInstance(property)); assertSame(pb, pb.unmodifiable()); assertEquivalent(pb, PrivilegeBits.getInstance(pb)); assertEquivalent(PrivilegeBits.getInstance(pb), pb); assertNotSame(pb, PrivilegeBits.getInstance(pb)); try { pb.add(READ_NODES_PRIVILEGE_BITS); fail("UnsupportedOperation expected"); } catch (UnsupportedOperationException e) { // success } try { pb.addDifference(READ_NODES_PRIVILEGE_BITS, READ_NODES_PRIVILEGE_BITS); fail("UnsupportedOperation expected"); } catch (UnsupportedOperationException e) { // success } try { pb.diff(READ_NODES_PRIVILEGE_BITS); fail("UnsupportedOperation expected"); } catch (UnsupportedOperationException e) { // success } } }
@Test public void testNextBits() { // long based privilege bits PrivilegeBits pb = READ_NODES_PRIVILEGE_BITS; long l = getLongValue(pb); while (l < Long.MAX_VALUE / 2) { l = l << 1; pb = pb.nextBits(); assertEquals(l, getLongValue(pb)); } // other privilege bits: long value not available. for (int i = 0; i < 10; i++) { PrivilegeBits nxt = pb.nextBits(); assertEquals(nxt, pb.nextBits()); assertFalse(pb.equals(nxt)); pb = nxt; } // modifiable privilege bits pb = READ_NODES_PRIVILEGE_BITS; for (int i = 0; i < 100; i++) { PrivilegeBits modifiable = PrivilegeBits.getInstance(pb); try { modifiable.nextBits(); fail("UnsupportedOperation expected"); } catch (UnsupportedOperationException e) { // success } pb = pb.nextBits(); } }
long before = getLongValue(mod); long nxtLong = getLongValue(nxt); if (getLongValue(nxt) != 0) { assertEquals(before | nxtLong, getLongValue(mod));
assertEquivalent(nxt, mod); assertEquivalent(nxt, mod); assertEquivalent(READ_NODES_PRIVILEGE_BITS, mod); assertEquivalent(other, mod);
@Test public void testGetInstanceFromMvPropertyState() { PropertyState property = PropertyStates.createProperty("name", ImmutableSet.of(Long.MAX_VALUE, Long.MIN_VALUE / 2), Type.LONGS); PrivilegeBits pb = PrivilegeBits.getInstance(property); assertEquivalent(pb, PrivilegeBits.getInstance(property)); assertSame(pb, pb.unmodifiable()); assertEquivalent(pb, PrivilegeBits.getInstance(pb)); assertEquivalent(PrivilegeBits.getInstance(pb), pb); assertNotSame(pb, PrivilegeBits.getInstance(pb)); try { pb.add(READ_NODES_PRIVILEGE_BITS); fail("UnsupportedOperation expected"); } catch (UnsupportedOperationException e) { // success } try { pb.addDifference(READ_NODES_PRIVILEGE_BITS, READ_NODES_PRIVILEGE_BITS); fail("UnsupportedOperation expected"); } catch (UnsupportedOperationException e) { // success } try { pb.diff(READ_NODES_PRIVILEGE_BITS); fail("UnsupportedOperation expected"); } catch (UnsupportedOperationException e) { // success } }
assertEquivalent(before, mod); mod.add(nxt); assertFalse(before.equals(mod)); mod.diff(nxt); assertEquivalent(before, mod); mod.add(nxt); tmp.add(READ_NODES_PRIVILEGE_BITS); tmp.diff(tmp); assertEquivalent(PrivilegeBits.EMPTY, tmp); tmp.add(READ_NODES_PRIVILEGE_BITS); tmp.diff(PrivilegeBits.getInstance(tmp)); assertEquivalent(PrivilegeBits.EMPTY, tmp); assertEquivalent(PrivilegeBits.getInstance(pb), tmp); assertTrue(tmp.includes(nxt)); tmp.diff(nxt); assertEquivalent(READ_NODES_PRIVILEGE_BITS, tmp); assertTrue(tmp.includes(READ_NODES_PRIVILEGE_BITS)); assertFalse(tmp.includes(nxt)); tmp2.add(nxt); PrivilegeBits tmp3 = PrivilegeBits.getInstance(tmp2); assertEquivalent(tmp2, tmp3); tmp.diff(tmp2); if (READ_NODES_PRIVILEGE_BITS.equals(pb)) { assertEquivalent(PrivilegeBits.EMPTY, tmp);
tmp.addDifference(nxt, READ_NODES_PRIVILEGE_BITS); mod.add(nxt); assertEquivalent(mod, tmp); // since there is diff(nxt, read) which results in nxt tmp.addDifference(mod2, READ_NODES_PRIVILEGE_BITS); assertEquivalent(mod2, mod); // mod2 should not be modified here assertTrue(tmp.includes(pb)); assertFalse(tmp.includes(READ_NODES_PRIVILEGE_BITS)); PrivilegeBits mod2 = PrivilegeBits.getInstance(mod); tmp.addDifference(READ_NODES_PRIVILEGE_BITS, mod2); assertEquivalent(nxt, tmp); // tmp not modified by addDifference call. assertEquivalent(mod2, mod); // mod2 should not be modified here assertFalse(tmp.includes(pb)); assertFalse(tmp.includes(READ_NODES_PRIVILEGE_BITS)); assertEquivalent(nxt, tmp); // tmp not modified by addDifference call. assertFalse(tmp.includes(READ_NODES_PRIVILEGE_BITS)); assertEquivalent(mod, tmp); // tmp not modified by addDifference call. assertTrue(tmp.includes(READ_NODES_PRIVILEGE_BITS));
@Test public void testGetInstance() { PrivilegeBits pb = PrivilegeBits.getInstance(); assertEquivalent(PrivilegeBits.EMPTY, pb); assertNotSame(PrivilegeBits.EMPTY, pb); assertNotSame(pb, pb.unmodifiable()); assertEquivalent(PrivilegeBits.EMPTY, pb); assertNotSame(PrivilegeBits.EMPTY, pb); assertNotSame(pb, pb.unmodifiable()); assertEquivalent(READ_NODES_PRIVILEGE_BITS, pb); assertNotSame(READ_NODES_PRIVILEGE_BITS, pb); assertNotSame(pb, pb.unmodifiable()); assertEquivalent(pb, PrivilegeBits.EMPTY); assertSame(pb, PrivilegeBits.EMPTY); assertSame(pb, pb.unmodifiable());
@Test public void testRetainSimple() { PrivilegeBits pb = PrivilegeBits.getInstance(READ_NODES_PRIVILEGE_BITS); assertEquals(pb, pb.retain(pb)); assertEquals(pb, pb.retain(READ_NODES_PRIVILEGE_BITS)); pb = PrivilegeBits.getInstance(READ_NODES_PRIVILEGE_BITS); pb.retain(PrivilegeBits.getInstance()); assertTrue(pb.isEmpty()); pb = PrivilegeBits.getInstance(READ_NODES_PRIVILEGE_BITS); pb.retain(PrivilegeBits.EMPTY); assertTrue(pb.isEmpty()); PrivilegeBits write = PrivilegeBits.BUILT_IN.get(PrivilegeBits.REP_WRITE); pb = PrivilegeBits.getInstance().add(write); assertEquals(pb, pb.retain(pb)); assertEquals(pb, pb.retain(write)); pb.retain(READ_NODES_PRIVILEGE_BITS); assertTrue(pb.isEmpty()); pb.add(READ_NODES_PRIVILEGE_BITS).add(write); pb.retain(write); assertEquivalent(write, pb); assertFalse(pb.includes(READ_NODES_PRIVILEGE_BITS)); PrivilegeBits lock = PrivilegeBits.BUILT_IN.get(PrivilegeBits.JCR_LOCK_MANAGEMENT); PrivilegeBits lw = PrivilegeBits.getInstance(write, lock); pb.add(READ_NODES_PRIVILEGE_BITS).add(write).add(lock); pb.retain(lw); assertEquivalent(lw, pb); assertFalse(pb.includes(READ_NODES_PRIVILEGE_BITS)); }