18bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson/* 28bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 38bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 48bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * this work for additional information regarding copyright ownership. 58bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 68bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * (the "License"); you may not use this file except in compliance with 78bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * the License. You may obtain a copy of the License at 88bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 98bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Unless required by applicable law or agreed to in writing, software 128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * See the License for the specific language governing permissions and 158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * limitations under the License. 168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson */ 178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonpackage libcore.java.lang; 188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport junit.framework.TestCase; 208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonpublic class OldObjectTest extends TestCase { 228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public boolean isCalled = false; 248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson /** 268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Test objects. 278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson */ 288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object obj1 = new Object(); 298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson /** 318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Generic state indicator. 328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson */ 338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson int status = 0; 348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson int ready = 0; 368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestThread1 thr1; 378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestThread2 thr2; 388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 39131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes public void test_hashCode() { 40131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes Object o1 = new Object(); 41131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes Object o2 = new Object(); 42131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes int h1 = System.identityHashCode(o1); 43131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes int h2 = System.identityHashCode(o2); 44131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes assertEquals(h1, o1.hashCode()); 45131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes assertEquals(h2, o2.hashCode()); 46131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes assertTrue(h1 != h2); 47131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes } 48131c6635785a20abe5fd609ba4f10c8dc4f0295fElliott Hughes 498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_clone() { 508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson MockCloneableObject mco = new MockCloneableObject(); 518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(mco.equals(mco.clone())); 538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(mco.getClass(), mco.clone().getClass()); 548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(CloneNotSupportedException cnse) { 558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("CloneNotSupportedException was thrown."); 568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson MockObject mo = new MockObject(); 598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson mo.clone(); 618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("CloneNotSupportedException was not thrown."); 628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(CloneNotSupportedException cnse) { 638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class MockCloneableObject extends Object implements Cloneable { 688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public Object clone() throws CloneNotSupportedException { 698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return super.clone(); 708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class MockObject extends Object { 748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson boolean isCalled = false; 768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void finalize() throws Throwable { 788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson super.finalize(); 798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson isCalled = true; 808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public Object clone() throws CloneNotSupportedException { 838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return super.clone(); 848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_notify() { 888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object obj = new Object(); 908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj.notify(); 918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalMonitorStateException was not thrown."); 928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalMonitorStateException imse) { 938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_notifyAll() { 988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object obj = new Object(); 1008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj.notifyAll(); 1018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalMonitorStateException was not thrown."); 1028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalMonitorStateException imse) { 1038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_wait() { 1088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object obj = new Object(); 1118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj.wait(); 1128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalMonitorStateException was not thrown."); 1138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalMonitorStateException imse) { 1148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(InterruptedException ex) { 1168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("InterruptedException was thrown."); 1178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1 = new TestThread1(TestThread1.CASE_WAIT); 1218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2 = new TestThread2(); 1228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1.start(); 1238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2.start(); 1248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2.join(); 1258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1.join(); 1268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1 = null; 1278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2 = null; 1288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(InterruptedException e) { 1298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("InterruptedException was thrown."); 1308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(3, status); 1328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class TestThread1 extends Thread { 1358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson static final int CASE_WAIT = 0; 1378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson static final int CASE_WAIT_LONG = 1; 1388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson static final int CASE_WAIT_LONG_INT = 2; 1398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson int testCase = CASE_WAIT; 1418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public TestThread1(int option) { 1438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson testCase = option; 1448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void run() { 1478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson synchronized (obj1) { 1488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson switch(testCase) { 1508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson case CASE_WAIT: 1518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj1.wait();// Wait for ever. 1528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 1538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson case CASE_WAIT_LONG: 1548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj1.wait(5000L); 1558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 1568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson case CASE_WAIT_LONG_INT: 1578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj1.wait(10000L, 999999); 1588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 1598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (InterruptedException ex) { 1628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson status = 3; 1638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class TestThread2 extends Thread { 1698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void run() { 1708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1.interrupt(); 1718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_waitJI() { 1758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object obj = new Object(); 1778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj.wait(5000L, 1); 1788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalMonitorStateException was not thrown."); 1798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalMonitorStateException imse) { 1808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(InterruptedException ex) { 1828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("InterruptedException was thrown."); 1838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1 = new TestThread1(TestThread1.CASE_WAIT_LONG_INT); 1878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2 = new TestThread2(); 1888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1.start(); 1898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2.start(); 1908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2.join(); 1918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1.join(); 1928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1 = null; 1938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2 = null; 1948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(InterruptedException e) { 1958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("InterruptedException was thrown."); 1968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(3, status); 198811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } 199811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes 200811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes public void test_waitJI_invalid() throws Exception { 201811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes Object o = new Object(); 202811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes synchronized (o) { 203811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes try { 204811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes o.wait(-1, 0); 205811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes fail(); 206811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } catch (IllegalArgumentException expected) { 207811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } 208811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes 209811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes try { 210811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes o.wait(0, -1); 211811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes fail(); 212811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } catch (IllegalArgumentException expected) { 213811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } 2148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 215811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes try { 216811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes o.wait(-1, -1); 217811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes fail(); 218811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } catch (IllegalArgumentException expected) { 219811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } 220811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes 221811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes // The ms timeout must fit in 32 bits. 222811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes try { 223811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes o.wait(Integer.MAX_VALUE + 1, 0); 224811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes fail(); 225811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } catch (IllegalArgumentException expected) { 226811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } 227811320db23eb8fa68b0ee8659b4448157a0680a5Elliott Hughes } 2288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_waitJ() { 2318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object obj = new Object(); 2338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson obj.wait(5000L); 2348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalMonitorStateException was not thrown."); 2358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalMonitorStateException imse) { 2368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(InterruptedException ex) { 2388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("InterruptedException was thrown."); 2398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1 = new TestThread1(TestThread1.CASE_WAIT_LONG); 2438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2 = new TestThread2(); 2448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1.start(); 2458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2.start(); 2468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2.join(); 2478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1.join(); 2488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr1 = null; 2498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thr2 = null; 2508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(InterruptedException e) { 2518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("InterruptedException was thrown."); 2528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(3, status); 2548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson} 256