### Question:
Events { public static void update (int threadID, int maxMillis) { if (threadID >= NUM_THREADS) { throw new IllegalArgumentException("threadID cannot >= number of threads, but threadID: " + threadID + " >= " + NUM_THREADS); } managers[threadID].update(maxMillis); } protected  Events(); static void init(); static void queueEvent(EventData event); static void triggerEvent(EventData event); static void update(int threadID, int maxMillis); static void addListener(int threadID, ClientEvents event, EventListener listener); static void addListener(int threadID, int typeID, EventListener listener); static void removeListener(int threadID, int typeID, EventListener listener); static final int UI_THREAD; static final int LOGIC_THREAD; static final int NETWORK_THREAD; }### Answer:
@Test (expected = IllegalArgumentException.class) public void testUpdateIllegalThreadId () { Events.update(10, 10); }
@Test public void testUpdate () { AtomicInteger count = new AtomicInteger(0); AtomicInteger count1 = new AtomicInteger(0); EventListener listener = eventData -> { count.incrementAndGet(); }; EventListener listener1 = event -> { count1.incrementAndGet(); }; Events.addListener(Events.UI_THREAD, 1, listener); Events.addListener(Events.LOGIC_THREAD, 1, listener1); Events.queueEvent(new DummyEventDataObject()); Events.queueEvent(new DummyEventDataObject()); Events.update(Events.UI_THREAD, 200); assertEquals(2, count.get()); assertEquals(0, count1.get()); Events.removeListener(Events.UI_THREAD, 1, listener); Events.removeListener(Events.LOGIC_THREAD, 1, listener1); }