### Question:
PolicyManager implements SwitchListener, EndpointListener, ClusteredDataTreeChangeListener<ResolvedPolicy>, Closeable { public ListenableFuture<Void> changeOpenFlowTableOffset(final short tableOffset) { try { verifyMaxTableId(tableOffset); } catch (IllegalArgumentException e) { LOG.error("Cannot update table offset. Max. table ID would be out of range.\n{}", e); return Futures.immediateFuture(null); } List<Short> tableIDs = getTableIDs(); this.tableOffset = tableOffset; return Futures.transform(removeUnusedTables(tableIDs), new Function<Void, Void>() { @Override public Void apply(Void tablesRemoved) { scheduleUpdate(); return null; } }, MoreExecutors.directExecutor()); } PolicyManager(DataBroker dataBroker, SwitchManager switchManager, EndpointManager endpointManager,
            ScheduledExecutorService executor, short tableOffset); ListenableFuture<Void> changeOpenFlowTableOffset(final short tableOffset); short getTABLEID_PORTSECURITY(); short getTABLEID_INGRESS_NAT(); short getTABLEID_SOURCE_MAPPER(); short getTABLEID_DESTINATION_MAPPER(); short getTABLEID_POLICY_ENFORCER(); short getTABLEID_EGRESS_NAT(); short getTABLEID_EXTERNAL_MAPPER(); short getTABLEID_SFC_EGRESS(); short getTABLEID_SFC_INGRESS(); TableId verifyMaxTableId(short tableOffset); @Override void switchReady(final NodeId nodeId); @Override void switchRemoved(NodeId sw); @Override void switchUpdated(NodeId sw); @Override void endpointUpdated(EpKey epKey); @Override void nodeEndpointUpdated(NodeId nodeId, EpKey epKey); @Override void groupEndpointUpdated(EgKey egKey, EpKey epKey); @Override void onDataTreeChanged(Collection<DataTreeModification<ResolvedPolicy>> changes); void setLearningMode(LearningMode learningMode); @Override void close();  }### Answer:
@Test public void changeOpenFlowTableOffsetTest() throws Exception { short tableOffset = 3; assertTrue(manager.changeOpenFlowTableOffset(tableOffset) != null); verify(switchManager, times(7)).getReadySwitches(); }