### Question:
SingleInputGate extends InputGate { public void setInputChannel(IntermediateResultPartitionID partitionId, InputChannel inputChannel) { synchronized (requestLock) { if (inputChannels.put(checkNotNull(partitionId), checkNotNull(inputChannel)) == null && inputChannel instanceof UnknownInputChannel) { numberOfUninitializedChannels++; } } } SingleInputGate(
		String owningTaskName,
		IntermediateDataSetID consumedResultId,
		final ResultPartitionType consumedPartitionType,
		int consumedSubpartitionIndex,
		int numberOfInputChannels,
		PartitionProducerStateProvider partitionProducerStateProvider,
		boolean isCreditBased,
		SupplierWithException<BufferPool, IOException> bufferPoolFactory); @Override void setup(); @Override int getNumberOfInputChannels(); IntermediateDataSetID getConsumedResultId(); ResultPartitionType getConsumedPartitionType(); BufferPool getBufferPool(); int getNumberOfQueuedBuffers(); CompletableFuture<Void> getCloseFuture(); void setBufferPool(BufferPool bufferPool); @VisibleForTesting void assignExclusiveSegments(); void setInputChannel(IntermediateResultPartitionID partitionId, InputChannel inputChannel); void updateInputChannel(
			ResourceID localLocation,
			NettyShuffleDescriptor shuffleDescriptor); void retriggerPartitionRequest(IntermediateResultPartitionID partitionId); @Override void close(); @Override boolean isFinished(); @Override Optional<BufferOrEvent> getNext(); @Override Optional<BufferOrEvent> pollNext(); @Override void sendTaskEvent(TaskEvent event); Map<IntermediateResultPartitionID, InputChannel> getInputChannels();  }### Answer:
@Test public void testIsAvailable() throws Exception { final SingleInputGate inputGate = createInputGate(1); TestInputChannel inputChannel = new TestInputChannel(inputGate, 0); inputGate.setInputChannel(new IntermediateResultPartitionID(), inputChannel); testIsAvailable(inputGate, inputGate, inputChannel); }