### Question:
ScreenToGeo implements Observer, ViewChangeListener { public void close() { myExecutor.shutdownNow(); myModel.deleteObserver(this); myMapManager.getViewChangeSupport().removeViewChangeListener(this); } ScreenToGeo(MapManager mapManager, XrayGogglesModel model); void close(); @Override void update(Observable o, Object arg); @Override void viewChanged(Viewer viewer, ViewChangeType type);  }### Answer:
@Test public void testInitial() throws InterruptedException { EasyMockSupport support = new EasyMockSupport(); MapManager mapManager = createMapManager(support); support.replayAll(); XrayGogglesModel model = new XrayGogglesModel(); model.setScreenPosition(new ScreenPosition(0, 0), new ScreenPosition(2, 0), new ScreenPosition(0, 2), new ScreenPosition(2, 2)); myLatch = new CountDownLatch(1); model.addObserver(this); ScreenToGeo screenToGeo = new ScreenToGeo(mapManager, model); assertTrue(myLatch.await(1, TimeUnit.SECONDS)); assertEquals(new Vector2d(10, 10), model.getUpperLeftGeo().asVector2d()); assertEquals(new Vector2d(12, 10), model.getUpperRightGeo().asVector2d()); assertEquals(new Vector2d(10, 12), model.getLowerLeftGeo().asVector2d()); assertEquals(new Vector2d(12, 12), model.getLowerRightGeo().asVector2d()); assertEquals(new Vector2d(11, 11), model.getCenterGeo().asVector2d()); screenToGeo.close(); model.setScreenPosition(new ScreenPosition(20, 20), new ScreenPosition(21, 20), new ScreenPosition(20, 21), new ScreenPosition(21, 21)); Thread.sleep(500); support.verifyAll(); }