!7 p { print("Test 1"); Either e = evalWithTimeout(1500, f f); assertEquals(0, l(evalWithTimeout_running)); assertEquals(0, l(evalWithTimeout_zombieThreads)); assertEqualsVerbose("yo!", e.a()); print("Test 2"); e = evalWithTimeout(500, f f); assertEquals(0, l(evalWithTimeout_running)); assertTrue(e.isB()); assertTrue(l(evalWithTimeout_zombieThreads) <= 1); while (l(evalWithTimeout_zombieThreads) > 0) sleep(1); print("Test 3"); e = evalWithTimeout(500, f g); assertEquals(0, l(evalWithTimeout_running)); sleep(10); assertEquals(1, l(evalWithTimeout_zombieThreads)); assertTrue(e.isB()); while (l(evalWithTimeout_zombieThreads) > 0) sleep(1); print("All OK"); } static S f() { sleep(1000); ret print("yo!"); } static S g() { busySleepSeconds(1); ret print("yo!"); }