001/*
002 * $Id$
003 */
004
005package edu.jas.kern;
006
007
008import java.util.concurrent.Callable;
009
010import junit.framework.Test;
011import junit.framework.TestCase;
012import junit.framework.TestSuite;
013
014
015
016/**
017 * TimeStatus tests with JUnit.
018 * @author Heinz Kredel
019 */
020public class TimeStatusTest extends TestCase {
021
022
023    /**
024     * main.
025     */
026    public static void main(String[] args) {
027        junit.textui.TestRunner.run(suite());
028    }
029
030
031    /**
032     * Constructs a <CODE>TimeStatusTest</CODE> object.
033     * @param name String.
034     */
035    public TimeStatusTest(String name) {
036        super(name);
037    }
038
039
040    /*
041     */
042    public static Test suite() {
043        TestSuite suite = new TestSuite(TimeStatusTest.class);
044        return suite;
045    }
046
047
048    @Override
049    protected void setUp() {
050    }
051
052
053    @Override
054    protected void tearDown() {
055        TimeStatus.setNotActive();
056        TimeStatus.setLimit(Long.MAX_VALUE);
057        TimeStatus.setCallBack((Callable<Boolean>) null);
058    }
059
060
061    /**
062     * Tests checkTime.
063     */
064    public void testCheckTime() {
065        TimeStatus.setActive();
066        assertTrue("is active ", TimeStatus.isActive());
067        TimeStatus.restart();
068        try {
069            TimeStatus.checkTime("test1");
070            // succeed
071        } catch (TimeExceededException e) {
072            fail("test1 " + e);
073        }
074
075        TimeStatus.setLimit(0L);
076        assertTrue("is active ", TimeStatus.isActive());
077        try {
078            Thread.sleep(10);
079            TimeStatus.checkTime("test2");
080            fail("test2 checkTime");
081        } catch (TimeExceededException e) {
082            // succeed
083        } catch (InterruptedException e) {
084            fail("test2 interrupt");
085        }
086    }
087
088
089    /**
090     * Tests call back.
091     */
092    public void testCallBack() {
093        TimeStatus.setActive();
094        TimeStatus.restart();
095        TimeStatus.setLimit(0L);
096        TimeStatus.setCallBack(new TimeStatus.TSCall(true));
097        assertTrue("is active ", TimeStatus.isActive());
098
099        try {
100            Thread.sleep(10);
101            TimeStatus.checkTime("test3");
102            // succeed
103        } catch (TimeExceededException e) {
104            fail("test3 checkTime");
105        } catch (InterruptedException e) {
106            fail("test3 interrupt");
107        }
108
109        TimeStatus.setCallBack(new TimeStatus.TSCall(false));
110        try {
111            Thread.sleep(10);
112            TimeStatus.checkTime("test4");
113            fail("test4 checkTime");
114        } catch (TimeExceededException e) {
115            // succeed
116        } catch (InterruptedException e) {
117            fail("test4 interrupt");
118        }
119    }
120
121}