BisectBoundaryHelper { public static int getMid(int left, int right) { return left + (right - left) / 2; } private  BisectBoundaryHelper(); static BisectStep getNextStep(BisectStep step, boolean isSuccess); static BisectStep firstStep(int number); static int getMid(int left, int right);  }
@Test public void GetMid_EqualBoundaries_ReturnsTheBoundary() throws Exception { int actual = BisectBoundaryHelper.getMid(0, 0); assertEquals(actual, 0); actual = BisectBoundaryHelper.getMid(5, 5); assertEquals(actual, 5); }
@Test public void GetMid_IntervalLengthOneStartsFromZero_ReturnsLeft() throws Exception { int actual = BisectBoundaryHelper.getMid(0, 1); assertEquals(actual, 0); }
@Test public void GetMid_IntervalLengthOneStartsFromOdd_ReturnsLeft() throws Exception { int actual = BisectBoundaryHelper.getMid(13, 14); assertEquals(actual, 13); }
@Test public void GetMid_IntervalLengthOneStartsFromEvenReturnsLeft() throws Exception { int actual = BisectBoundaryHelper.getMid(34, 35); assertEquals(actual, 34); }
@Test public void GetMid_OddIntervalStartsFromZero_ReturnsMid() throws Exception { int actual = BisectBoundaryHelper.getMid(0, 3); assertEquals(actual, 1); actual = BisectBoundaryHelper.getMid(0, 11); assertEquals(actual, 5); }
@Test public void GetMid_OddIntervalStartsFromOdd_ReturnsMid() throws Exception { int actual = BisectBoundaryHelper.getMid(11, 14); assertEquals(actual, 12); actual = BisectBoundaryHelper.getMid(31, 38); assertEquals(actual, 34); actual = BisectBoundaryHelper.getMid(7, 28); assertEquals(actual, 17); }
@Test public void GetMid_OddIntervalStartsFromEven_ReturnsMid() throws Exception { int actual = BisectBoundaryHelper.getMid(14, 17); assertEquals(actual, 15); actual = BisectBoundaryHelper.getMid(6, 13); assertEquals(actual, 9); actual = BisectBoundaryHelper.getMid(12, 43); assertEquals(actual, 27); }
@Test public void GetMid_EvenIntervalStartsFromZero_ReturnsUpperMid() throws Exception { int actual = BisectBoundaryHelper.getMid(0, 2); assertEquals(actual, 1); actual = BisectBoundaryHelper.getMid(0, 26); assertEquals(actual, 13); }
@Test public void GetMid_EvenIntervalStartsFromOdd_ReturnsUpperMid() throws Exception { int actual = BisectBoundaryHelper.getMid(3, 5); assertEquals(actual, 4); actual = BisectBoundaryHelper.getMid(7, 15); assertEquals(actual, 11); actual = BisectBoundaryHelper.getMid(13, 35); assertEquals(actual, 24); }
@Test public void GetMid_EvenIntervalStartsFromEven_ReturnsUpperMid() throws Exception { int actual = BisectBoundaryHelper.getMid(6, 8); assertEquals(actual, 7); actual = BisectBoundaryHelper.getMid(14, 16); assertEquals(actual, 15); actual = BisectBoundaryHelper.getMid(8, 32); assertEquals(actual, 20); }