BisectBoundaryHelper { public static BisectStep getNextStep(BisectStep step, boolean isSuccess) { return isSuccess ? later(step.getLeft(), step.getRight()) : earlier(step.getLeft(), step.getRight()); } private  BisectBoundaryHelper(); static BisectStep getNextStep(BisectStep step, boolean isSuccess); static BisectStep firstStep(int number); static int getMid(int left, int right);  }
@Test public void GetNextStep_EmptyIntervalStartsFromZero_ReturnsNull() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 0), true); assertNull(actual); actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 0), false); assertNull(actual); }
@Test public void GetNextStep_EmptyIntervalStartsFromNonZero_ReturnsNull() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(1, 1), true); assertNull(actual); actual = BisectBoundaryHelper.getNextStep(new BisectStep(1, 1), false); assertNull(actual); }
@Test public void GetNextStep_IntervalLengthOneStartsFromZero_ReturnsNull() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 1), true); assertNull(actual); actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 1), false); assertNull(actual); }
@Test public void GetNextStep_IntervalLengthOneStartsFromNonZero_ReturnsNull() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(1, 2), true); assertNull(actual); actual = BisectBoundaryHelper.getNextStep(new BisectStep(1, 2), false); assertNull(actual); }
@Test public void GetNextStep_IntervalLengthTwoStartsFromZeroAndSuccess_ReturnsLater() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 2), true); assertBuildStep(actual, 0, 1); }
@Test public void GetNextStep_IntervalLengthTwoStartsFromNonZeroAndSuccess_ReturnsLater() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(14, 16), true); assertBuildStep(actual, 14, 15); }
@Test public void GetNextStep_IntervalLengthTwoStartsFromZeroAndFail_ReturnsNull() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 2), false); assertNull(actual); }
@Test public void GetNextStep_OddIntervalStartsFromZeroAndSuccess_ReturnsLater() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 3), true); assertBuildStep(actual, 0, 1); actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 11), true); assertBuildStep(actual, 0, 5); }
@Test public void GetNextStep_OddIntervalStartsFromNonZeroAndSuccess_ReturnsLater() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(5, 8), true); assertBuildStep(actual, 5, 6); actual = BisectBoundaryHelper.getNextStep(new BisectStep(14, 27), true); assertBuildStep(actual, 14, 20); }
@Test public void GetNextStep_OddIntervalStartsFromZeroAndFail_ReturnsOlder() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 3), false); assertBuildStep(actual, 2, 3); actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 17), false); assertBuildStep(actual, 9, 17); }
@Test public void GetNextStep_OddIntervalStartsFromNonZeroAndFail_ReturnsOlder() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(6, 9), false); assertBuildStep(actual, 8, 9); actual = BisectBoundaryHelper.getNextStep(new BisectStep(21, 46), false); assertBuildStep(actual, 34, 46); }
@Test public void GetNextStep_EvenIntervalStartsFromZeroAndSuccess_ReturnsLater() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 4), true); assertBuildStep(actual, 0, 2); actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 36), true); assertBuildStep(actual, 0, 18); }
@Test public void GetNextStep_EvenIntervalStartsFromNonZeroAndSuccess_ReturnsLater() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(6, 10), true); assertBuildStep(actual, 6, 8); actual = BisectBoundaryHelper.getNextStep(new BisectStep(12, 38), true); assertBuildStep(actual, 12, 25); }
@Test public void GetNextStep_EvenIntervalStartsFromZeroAndFail_ReturnsOlder() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 4), false); assertBuildStep(actual, 3, 4); actual = BisectBoundaryHelper.getNextStep(new BisectStep(0, 42), false); assertBuildStep(actual, 22, 42); }
@Test public void GetNextStep_EvenIntervalStartsFromNonZeroAndFail_ReturnsOlder() throws Exception { BisectStep actual = BisectBoundaryHelper.getNextStep(new BisectStep(5, 9), false); assertBuildStep(actual, 8, 9); actual = BisectBoundaryHelper.getNextStep(new BisectStep(16, 44), false); assertBuildStep(actual, 31, 44); }