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