samples/privilegedcreator/test/api/MutexTest.java
author jaroslav.tulach@apidesign.org
Mon, 25 May 2009 21:49:25 +0200
changeset 334 0f3e13581901
parent 332 139aacf8152d
permissions -rw-r--r--
Use the MUTEX variable instead of local lock
jtulach@71
     1
package api;
jtulach@71
     2
jtulach@330
     3
import org.apidesign.privileged.api.Mutex;
jtulach@71
     4
import org.junit.After;
jtulach@71
     5
import org.junit.AfterClass;
jtulach@71
     6
import org.junit.Before;
jtulach@71
     7
import org.junit.BeforeClass;
jtulach@71
     8
import org.junit.Test;
jtulach@71
     9
import static org.junit.Assert.*;
jtulach@71
    10
jtulach@71
    11
public class MutexTest {
jtulach@71
    12
    // BEGIN: mutex.init
jtulach@71
    13
    private static final Mutex.Privileged PRIVILEGED = new Mutex.Privileged();
jtulach@71
    14
    public static final Mutex MUTEX = new Mutex(PRIVILEGED);
jtulach@71
    15
    // END: mutex.init
jtulach@71
    16
jtulach@71
    17
    public MutexTest() {
jtulach@71
    18
    }
jtulach@71
    19
jtulach@71
    20
    /**
jtulach@71
    21
     * Test of readAccess method, of class Mutex.
jtulach@71
    22
     */
jtulach@71
    23
    @Test
jtulach@71
    24
    public void readAccess() {
jtulach@331
    25
        // BEGIN: mutex.use
jtulach@71
    26
        class R implements Runnable {
jtulach@71
    27
            int cnt;
jtulach@71
    28
            
jtulach@71
    29
            public void run() {
jtulach@71
    30
                cnt++;
jtulach@71
    31
            }
jtulach@71
    32
        }
jtulach@71
    33
        R r = new R();
jaroslav@334
    34
        MUTEX.readAccess(r);
jtulach@332
    35
        assertEquals("Counter increased", 1, r.cnt);
jtulach@331
    36
        // END: mutex.use
jtulach@71
    37
    }
jtulach@71
    38
    
jtulach@71
    39
    @Test
jtulach@71
    40
    public void usePrivileged() {
jtulach@332
    41
        int cnt = 0;
jtulach@71
    42
        // BEGIN: mutex.privileged
jtulach@332
    43
        PRIVILEGED.enterReadAccess();
jtulach@71
    44
        try {
jtulach@71
    45
          // do the operation
jtulach@332
    46
            cnt++;
jtulach@71
    47
        } finally {
jtulach@332
    48
           PRIVILEGED.exitReadAccess();
jtulach@71
    49
        }
jtulach@332
    50
        assertEquals("Counter increased", 1, cnt);
jtulach@71
    51
        // END: mutex.privileged
jtulach@71
    52
        
jtulach@71
    53
    }
jtulach@71
    54
jaroslav@334
    55
}