1 32 package net.sf.retrotranslator.transformer; 33 34 import java.lang.ref.*; 35 import java.util.concurrent.locks.*; 36 import junit.framework.TestCase; 37 38 41 public class SpecificReplacementVisitorTestCase extends TestCase { 42 43 public void testNanotime() throws Exception { 44 long n = System.nanoTime(); 45 long m = System.currentTimeMillis(); 46 Thread.sleep(100); 47 m = System.currentTimeMillis() - m; 48 n = System.nanoTime() - n; 49 assertTrue(Math.abs(n / 1000000 - m) <= 100); 50 } 51 52 public void testIllegalArgumentExceptionOneParam() throws Exception { 53 IllegalArgumentException exception = new IllegalArgumentException (new ClassNotFoundException ("123")); 54 assertEquals("java.lang.ClassNotFoundException: 123", exception.getMessage()); 55 Throwable cause = exception.getCause(); 56 assertTrue(cause instanceof ClassNotFoundException ); 57 assertEquals("123", cause.getMessage()); 58 class Ex extends IllegalArgumentException { 59 public Ex(Throwable cause) { 60 super(cause); 61 } 62 } 63 Ex ex = new Ex(new IllegalArgumentException ()); 64 assertEquals("java.lang.IllegalArgumentException", ex.getMessage()); 65 assertTrue(ex.getCause() instanceof IllegalArgumentException ); 66 67 IllegalArgumentException nullCausedEx = new IllegalArgumentException ((Throwable ) null); 68 assertNull(nullCausedEx.getMessage()); 69 assertNull(nullCausedEx.getCause()); 70 try { 71 nullCausedEx.initCause(new Throwable ()); 72 fail(); 73 } catch (IllegalStateException e) { 74 } 76 } 77 78 public void testIllegalArgumentExceptionTwoParam() throws Exception { 79 IllegalArgumentException exception = new IllegalArgumentException ("abc", new ClassNotFoundException ("123")); 80 assertEquals("abc", exception.getMessage()); 81 Throwable cause = exception.getCause(); 82 assertTrue(cause instanceof ClassNotFoundException ); 83 assertEquals("123", cause.getMessage()); 84 class Ex extends IllegalArgumentException { 85 public Ex(String message, Throwable cause) { 86 super(message, cause); 87 } 88 } 89 Ex ex = new Ex("qwerty", new IllegalArgumentException ()); 90 assertEquals("qwerty", ex.getMessage()); 91 assertTrue(ex.getCause() instanceof IllegalArgumentException ); 92 } 93 94 public void testIllegalStateExceptionOneParam() throws Exception { 95 IllegalStateException exception = new IllegalStateException (new ClassNotFoundException ("123")); 96 assertEquals("java.lang.ClassNotFoundException: 123", exception.getMessage()); 97 Throwable cause = exception.getCause(); 98 assertTrue(cause instanceof ClassNotFoundException ); 99 assertEquals("123", cause.getMessage()); 100 class Ex extends IllegalStateException { 101 public Ex(Throwable cause) { 102 super(cause); 103 } 104 } 105 Ex ex = new Ex(new IllegalArgumentException ()); 106 assertEquals("java.lang.IllegalArgumentException", ex.getMessage()); 107 assertTrue(ex.getCause() instanceof IllegalArgumentException ); 108 109 IllegalStateException nullCausedEx = new IllegalStateException ((Throwable ) null); 110 assertNull(nullCausedEx.getMessage()); 111 assertNull(nullCausedEx.getCause()); 112 try { 113 nullCausedEx.initCause(new Throwable ()); 114 fail(); 115 } catch (IllegalStateException e) { 116 } 118 } 119 120 public void testIllegalStateExceptionTwoParam() throws Exception { 121 IllegalStateException exception = new IllegalStateException ("abc", new ClassNotFoundException ("123")); 122 assertEquals("abc", exception.getMessage()); 123 Throwable cause = exception.getCause(); 124 assertTrue(cause instanceof ClassNotFoundException ); 125 assertEquals("123", cause.getMessage()); 126 class Ex extends IllegalStateException { 127 public Ex(String message, Throwable cause) { 128 super(message, cause); 129 } 130 } 131 Ex ex = new Ex("qwerty", new IllegalArgumentException ()); 132 assertEquals("qwerty", ex.getMessage()); 133 assertTrue(ex.getCause() instanceof IllegalArgumentException ); 134 } 135 136 public void testSoftReference() throws Exception { 137 class MyReference<T> extends SoftReference<T> { 138 public MyReference(T referent, ReferenceQueue<? super T> q) { 139 super(referent, q); 140 } 141 } 142 new MyReference<String >("a", null); 143 new MyReference<String >("b", new ReferenceQueue<String >()); 144 new SoftReference<String >("c", null); 145 new SoftReference<String >("d", new ReferenceQueue<String >()); 146 } 147 148 public void testWeakReference() throws Exception { 149 class MyReference<T> extends WeakReference<T> { 150 public MyReference(T referent, ReferenceQueue<? super T> q) { 151 super(referent, q); 152 } 153 } 154 new WeakReference<String >("a", null); 155 new MyReference<String >("b", null); 156 ReferenceQueue<String > queue1 = new ReferenceQueue<String >(); 157 ReferenceQueue<String > queue2 = new ReferenceQueue<String >(); 158 Reference<String > reference1 = new MyReference<String >(new String ("c"), queue1); 159 Reference<String > reference2 = new WeakReference<String >(new String ("d"), queue2); 160 gc(); 161 assertSame(reference1, queue1.poll()); 162 assertSame(reference2, queue2.poll()); 163 } 164 165 private static void gc() throws InterruptedException { 166 for (int i = 0; i < 10; i++) { 167 System.gc(); 168 Thread.sleep(100); 169 } 170 } 171 172 public void testReentrantReadWriteLock() throws Exception { 173 ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock(); 174 ReentrantReadWriteLock.ReadLock readLock = readWriteLock.readLock(); 175 ReentrantReadWriteLock.WriteLock writeLock = readWriteLock.writeLock(); 176 assertTrue(readLock.tryLock()); 177 readLock.unlock(); 178 assertTrue(writeLock.tryLock()); 179 writeLock.unlock(); 180 } 181 182 public void testCondition_awaitNanos() throws Exception { 183 ReentrantLock lock = new ReentrantLock(); 184 lock.lock(); 185 lock.newCondition().awaitNanos(1000); 186 lock.unlock(); 187 try { 188 lock.newCondition().awaitNanos(1000); 189 fail(); 190 } catch (IllegalMonitorStateException e) { 191 } 193 } 194 195 196 } | Popular Tags |