jtulach@335: package org.apidesign.privileged.use; jtulach@71: jtulach@330: import org.apidesign.privileged.api.Mutex; jtulach@71: import org.junit.Test; jtulach@71: import static org.junit.Assert.*; jtulach@71: jtulach@71: public class MutexTest { jtulach@71: // BEGIN: mutex.init jtulach@71: private static final Mutex.Privileged PRIVILEGED = new Mutex.Privileged(); jtulach@71: public static final Mutex MUTEX = new Mutex(PRIVILEGED); jtulach@71: // END: mutex.init jtulach@71: jtulach@71: public MutexTest() { jtulach@71: } jtulach@71: jtulach@71: /** jtulach@335: * Test of withLock method, of class Mutex. jtulach@71: */ jtulach@71: @Test jtulach@71: public void readAccess() { jtulach@331: // BEGIN: mutex.use jtulach@71: class R implements Runnable { jtulach@71: int cnt; jtulach@71: jtulach@71: public void run() { jtulach@71: cnt++; jtulach@71: } jtulach@71: } jtulach@71: R r = new R(); jtulach@335: MUTEX.withLock(r); jtulach@332: assertEquals("Counter increased", 1, r.cnt); jtulach@331: // END: mutex.use jtulach@71: } jtulach@71: jtulach@71: @Test jtulach@71: public void usePrivileged() { jtulach@332: int cnt = 0; jtulach@71: // BEGIN: mutex.privileged jtulach@71: try { jtulach@335: PRIVILEGED.lock(); jtulach@335: // do the operation jtulach@332: cnt++; jtulach@71: } finally { jtulach@335: PRIVILEGED.unlock(); jtulach@71: } jtulach@332: assertEquals("Counter increased", 1, cnt); jtulach@71: // END: mutex.privileged jtulach@71: jtulach@71: } jtulach@71: jaroslav@334: }