### Question:
WatchDataSourceImpl implements WatchDataSource, ServerProxyTrust { public void unexport(boolean force) { if(!exported) return; try { exporter.unexport(force); exported = false; proxy = null; } catch(IllegalStateException e) { } } WatchDataSourceImpl();  WatchDataSourceImpl(String id, Configuration config); void initialize(); WatchDataSource export(); WatchDataSource getProxy(); void setConfiguration(Configuration config); void unexport(boolean force); String getID(); void setID(String id); void setMaxSize(int size); void clear(); int getMaxSize(); int getCurrentSize(); @SuppressWarnings("unchecked") void addCalculable(Calculable calculable); Calculable[] getCalculable(); Calculable[] getCalculable(String id); Calculable[] getCalculable(long from, long to); Calculable getLastCalculable(); ThresholdValues getThresholdValues(); void setThresholdValues(ThresholdValues tValues); void close(); void setView(String viewClass); String getView(); TrustVerifier getProxyVerifier(); boolean addWatchDataReplicator(WatchDataReplicator replicator); boolean removeWatchDataReplicator(WatchDataReplicator replicator); WatchDataReplicator[] getWatchDataReplicators(); final static int DEFAULT_COLLECTION_SIZE; final static int MAX_COLLECTION_SIZE; }### Answer:
@Test public void testUnexport() throws Exception { final int N = 3; Integer[] counts = new Integer[N]; for (int i = 0; i < N; i++) { counts[i] = i; } Object[][] combinations = ArrayUtils.combinations(new Object[][] { counts, counts, booleanAxis}); for (Object[] combination : combinations) { int exportCount = (Integer) combination[0]; int unexportCount = (Integer) combination[1]; boolean force = (Boolean) combination[2]; LoggingWatchDataSourceImpl impl = new LoggingWatchDataSourceImpl( "watch", null, EmptyConfiguration.INSTANCE); List<WatchDataSource> proxies = new ArrayList<WatchDataSource>(); for (int j = 0; j < exportCount; j++) { proxies.add(impl.export()); } for (int j = 0; j < unexportCount; j++) { impl.unexport(force); } if (exportCount > 0 && unexportCount == 0) { Assert.assertNotNull(impl.getProxy()); } else { Assert.assertNull(impl.getProxy()); } impl.unexport(force); Assert.assertNull(impl.getProxy()); if (proxies.size() > 0) { assertAllSame(proxies); assertInvalidProxy(proxies.get(0), impl); } assertAddCalculableWorks(impl, 10, true); impl.close(); } }