001/* 002 * $Id: TimeStatusTest.java 5863 2018-07-20 11:13:34Z kredel $ 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 TSCallMock(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 TSCallMock(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} 122 123 124class TSCallMock implements Callable<Boolean> { 125 126 127 boolean flag = true; 128 129 130 public TSCallMock(boolean b) { 131 flag = b; 132 } 133 134 135 public Boolean call() { 136 return flag; 137 } 138 139}