### Question:
DefaultHttp2RemoteFlowController implements Http2RemoteFlowController { @Override public void updateDependencyTree( final int childStreamId, final int parentStreamId, final short weight, final boolean exclusive) { assert weight >= MIN_WEIGHT && weight <= MAX_WEIGHT : "Invalid weight"; assert childStreamId != parentStreamId : "A stream cannot depend on itself"; assert childStreamId > 0 && parentStreamId >= 0 : "childStreamId must be > 0. parentStreamId must be >= 0."; streamByteDistributor.updateDependencyTree(childStreamId, parentStreamId, weight, exclusive); } DefaultHttp2RemoteFlowController(final Http2Connection connection);  DefaultHttp2RemoteFlowController(
      final Http2Connection connection, final StreamByteDistributor streamByteDistributor);  DefaultHttp2RemoteFlowController(
      final Http2Connection connection, final Listener listener);  DefaultHttp2RemoteFlowController(
      final Http2Connection connection,
      final StreamByteDistributor streamByteDistributor,
      final Listener listener); @Override void channelHandlerContext(final ChannelHandlerContext ctx); @Override ChannelHandlerContext channelHandlerContext(); @Override void initialWindowSize(final int newWindowSize); @Override int initialWindowSize(); @Override int windowSize(final Http2Stream stream); @Override boolean isWritable(final Http2Stream stream); @Override void channelWritabilityChanged(); @Override void updateDependencyTree(
      final int childStreamId,
      final int parentStreamId,
      final short weight,
      final boolean exclusive); @Override void listener(final Listener listener); @Override void incrementWindowSize(final Http2Stream stream, final int delta); @Override void addFlowControlled(final Http2Stream stream, final FlowControlled frame); @Override boolean hasFlowControlled(final Http2Stream stream); @Override void writePendingBytes();  }### Answer:
@Test(expected = AssertionError.class) public void invalidParentStreamIdThrows() { controller.updateDependencyTree(STREAM_D, -1, DEFAULT_PRIORITY_WEIGHT, true); }
@Test(expected = AssertionError.class) public void invalidChildStreamIdThrows() { controller.updateDependencyTree(-1, STREAM_D, DEFAULT_PRIORITY_WEIGHT, true); }
@Test(expected = AssertionError.class) public void connectionChildStreamIdThrows() { controller.updateDependencyTree(0, STREAM_D, DEFAULT_PRIORITY_WEIGHT, true); }
@Test(expected = AssertionError.class) public void invalidWeightTooSmallThrows() { controller.updateDependencyTree(STREAM_A, STREAM_D, (short) (MIN_WEIGHT - 1), true); }
@Test(expected = AssertionError.class) public void invalidWeightTooBigThrows() { controller.updateDependencyTree(STREAM_A, STREAM_D, (short) (MAX_WEIGHT + 1), true); }
@Test(expected = AssertionError.class) public void dependencyOnSelfThrows() { controller.updateDependencyTree(STREAM_A, STREAM_A, DEFAULT_PRIORITY_WEIGHT, true); }