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 }