jtulach@71: package api; jtulach@71: jtulach@330: import org.apidesign.privileged.api.Mutex; jtulach@71: import org.junit.After; jtulach@71: import org.junit.AfterClass; jtulach@71: import org.junit.Before; jtulach@71: import org.junit.BeforeClass; 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@71: * Test of readAccess 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(); jaroslav@334: MUTEX.readAccess(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@332: PRIVILEGED.enterReadAccess(); jtulach@71: try { jtulach@71: // do the operation jtulach@332: cnt++; jtulach@71: } finally { jtulach@332: PRIVILEGED.exitReadAccess(); jtulach@71: } jtulach@332: assertEquals("Counter increased", 1, cnt); jtulach@71: // END: mutex.privileged jtulach@71: jtulach@71: } jtulach@71: jaroslav@334: }