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 * LocalTimeStatus tests with JUnit.
018 * @author Heinz Kredel
019 */
020public class LocalTimeStatusTest 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>LocalTimeStatusTest</CODE> object.
033     * @param name String.
034     */
035    public LocalTimeStatusTest(String name) {
036        super(name);
037    }
038
039
040    /*
041     */
042    public static Test suite() {
043        TestSuite suite = new TestSuite(LocalTimeStatusTest.class);
044        return suite;
045    }
046
047
048    LocalTimeStatus lt1, lt2;
049
050
051    @Override
052    protected void setUp() {
053        lt1 = new LocalTimeStatus();
054        lt2 = new LocalTimeStatus(true, 0, true);
055    }
056
057
058    @Override
059    protected void tearDown() {
060        lt1.setNotActive();
061        lt1.setLimit(Long.MAX_VALUE);
062        lt1.setCallBack((Callable<Boolean>) null);
063        lt2 = null;
064    }
065
066
067    /**
068     * Tests checkTime.
069     */
070    public void testCheckTime() {
071        //System.out.println("lt1 = " + lt1);
072        //System.out.println("lt2 = " + lt2);
073        lt1.setActive();
074        assertTrue("is active lt1", lt1.isActive());
075        assertTrue("is active lt2", lt2.isActive());
076        lt1.restart();
077        try {
078            lt1.checkTime("test1");
079            lt2.checkTime("test1-2");
080            // succeed
081        } catch (TimeExceededException e) {
082            fail("test1 " + e);
083        }
084
085        lt1.setLimit(0L);
086        assertTrue("is active lt1", lt1.isActive());
087        try {
088            Thread.sleep(10);
089            lt1.checkTime("test2");
090            lt2.checkTime("test2-2");
091            fail("test2 checkTime 1|2");
092        } catch (TimeExceededException e) {
093            // succeed
094        } catch (InterruptedException e) {
095            fail("test2 interrupt");
096        }
097        //System.out.println("lt1 = " + lt1);
098        //System.out.println("lt2 = " + lt2);
099    }
100
101
102    /**
103     * Tests call back.
104     */
105    public void testCallBack() {
106        //System.out.println("lt1 = " + lt1);
107        //System.out.println("lt2 = " + lt2);
108        lt1.setActive();
109        lt1.restart();
110        lt1.setLimit(0L);
111        lt1.setCallBack(new LocalTimeStatus.TSCall(true));
112        assertTrue("is active lt1", lt1.isActive());
113        assertTrue("is active lt2", lt2.isActive());
114
115        try {
116            Thread.sleep(10);
117            lt1.checkTime("test3");
118            lt2.checkTime("test3-2");
119            // succeed
120        } catch (TimeExceededException e) {
121            fail("test3 checkTime");
122        } catch (InterruptedException e) {
123            fail("test3 interrupt");
124        }
125
126        lt1.setCallBack(new LocalTimeStatus.TSCall(false));
127        try {
128            Thread.sleep(10);
129            lt1.checkTime("test4");
130            fail("test4 checkTime");
131        } catch (TimeExceededException e) {
132            // succeed
133        } catch (InterruptedException e) {
134            fail("test4 interrupt");
135        }
136
137        lt2.setCallBack(new LocalTimeStatus.TSCall(false));
138        try {
139            Thread.sleep(10);
140            lt2.checkTime("test4-2");
141            fail("test4 checkTime");
142        } catch (TimeExceededException e) {
143            // succeed
144        } catch (InterruptedException e) {
145            fail("test4 interrupt");
146        }
147        //System.out.println("lt1 = " + lt1);
148        //System.out.println("lt2 = " + lt2);
149    }
150
151}