Program: 74579
Project: 74579
Buggy source:
public void testNavigator() throws DataException, OLAPException {
  ICubeQueryDefinition cqd=creator.createMirroredQueryDefinition();
  BirtCubeView cubeView=new BirtCubeView(new CubeQueryExecutor(cqd,de.getSession(),this.scope,de.getContext()));
  CubeCursor dataCursor=cubeView.getCubeCursor();
  EdgeCursor rowCursor=cubeView.getRowEdgeView().getEdgeCursor();
  EdgeCursor columnCursor=cubeView.getColumnEdgeView().getEdgeCursor();
  DimensionCursor countryCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(0);
  DimensionCursor cityCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(1);
  DimensionCursor streetCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(2);
  DimensionCursor yearCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(3);
  DimensionCursor productLineCursor=(DimensionCursor)rowCursor.getDimensionCursor().get(0);
  DimensionCursor productNameCursor=(DimensionCursor)rowCursor.getDimensionCursor().get(1);
  columnCursor.beforeFirst();
  assertTrue(columnCursor.isBeforeFirst());
  assertTrue(countryCursor.isBeforeFirst());
  assertTrue(cityCursor.isBeforeFirst());
  assertTrue(streetCursor.isBeforeFirst());
  assertTrue(yearCursor.isBeforeFirst());
  columnCursor.afterLast();
  assertTrue(columnCursor.isAfterLast());
  assertTrue(countryCursor.isAfterLast());
  assertTrue(cityCursor.isAfterLast());
  assertTrue(streetCursor.isAfterLast());
  assertTrue(yearCursor.isAfterLast());
  columnCursor.first();
  countryCursor.afterLast();
  cityCursor.afterLast();
  streetCursor.afterLast();
  yearCursor.afterLast();
  assertTrue(countryCursor.isAfterLast());
  assertTrue(cityCursor.isAfterLast());
  assertTrue(streetCursor.isAfterLast());
  assertTrue(yearCursor.isAfterLast());
  columnCursor.first();
  columnCursor.next();
  cityCursor.afterLast();
  streetCursor.afterLast();
  yearCursor.afterLast();
  assertTrue(countryCursor.isFirst());
  assertTrue(cityCursor.isAfterLast());
  assertTrue(streetCursor.isAfterLast());
  assertTrue(yearCursor.isAfterLast());
  columnCursor.first();
  assertTrue(columnCursor.isFirst());
  assertTrue(countryCursor.isFirst());
  assertTrue(cityCursor.isFirst());
  assertTrue(streetCursor.isFirst());
  assertTrue(yearCursor.isFirst());
  columnCursor.last();
  assertTrue(columnCursor.last());
  assertTrue(countryCursor.last());
  assertTrue(cityCursor.last());
  assertTrue(streetCursor.last());
  assertTrue(yearCursor.last());
  columnCursor.setPosition(5);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.setPosition(85);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.setPosition(220);
  try {
    countryCursor.getObject("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  OLAPException e) {
  }
  columnCursor.setPosition(225);
  columnCursor.previous();
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.setPosition(86);
  columnCursor.previous();
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.relative(6);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.next();
  columnCursor.next();
  columnCursor.next();
  columnCursor.setPosition(1);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.setPosition(80);
  streetCursor.setPosition(1);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.setPosition(80);
  columnCursor.next();
  countryCursor.next();
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.afterLast();
  try {
    streetCursor.getObject("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  OLAPException e) {
  }
  columnCursor.beforeFirst();
  columnCursor.next();
  assertTrue(countryCursor.getEdgeStart() == 0);
  assertTrue(countryCursor.getEdgeEnd() == 79);
  assertTrue(cityCursor.getEdgeStart() == 0);
  assertTrue(cityCursor.getEdgeEnd() == 19);
  assertTrue(streetCursor.getEdgeStart() == 0);
  assertTrue(streetCursor.getEdgeEnd() == 4);
  assertTrue(yearCursor.getEdgeStart() == 0);
  assertTrue(yearCursor.getEdgeEnd() == 0);
  columnCursor.beforeFirst();
  columnCursor.setPosition(1);
  assertTrue(countryCursor.getEdgeStart() == 0);
  assertTrue(countryCursor.getEdgeEnd() == 79);
  assertTrue(cityCursor.getEdgeStart() == 0);
  assertTrue(cityCursor.getEdgeEnd() == 19);
  assertTrue(streetCursor.getEdgeStart() == 0);
  assertTrue(streetCursor.getEdgeEnd() == 4);
  assertTrue(yearCursor.getEdgeStart() == 1);
  assertTrue(yearCursor.getEdgeEnd() == 1);
  columnCursor.setPosition(81);
  assertTrue(countryCursor.getEdgeStart() == 80);
  assertTrue(countryCursor.getEdgeEnd() == 119);
  assertTrue(cityCursor.getEdgeStart() == 80);
  assertTrue(cityCursor.getEdgeEnd() == 99);
  assertTrue(streetCursor.getEdgeStart() == 80);
  assertTrue(streetCursor.getEdgeEnd() == 84);
  assertTrue(yearCursor.getEdgeStart() == 81);
  assertTrue(yearCursor.getEdgeEnd() == 81);
  columnCursor.setPosition(146);
  assertTrue(countryCursor.getEdgeStart() == 120);
  assertTrue(countryCursor.getEdgeEnd() == 159);
  assertTrue(cityCursor.getEdgeStart() == 140);
  assertTrue(cityCursor.getEdgeEnd() == 159);
  assertTrue(streetCursor.getEdgeStart() == 145);
  assertTrue(streetCursor.getEdgeEnd() == 149);
  assertTrue(yearCursor.getEdgeStart() == 146);
  assertTrue(yearCursor.getEdgeEnd() == 146);
  columnCursor.beforeFirst();
  columnCursor.setPosition(220);
  assertTrue(countryCursor.getEdgeStart() == -1);
  assertTrue(countryCursor.getEdgeEnd() == -1);
  assertTrue(cityCursor.getEdgeStart() == -1);
  assertTrue(cityCursor.getEdgeEnd() == -1);
  assertTrue(streetCursor.getEdgeStart() == -1);
  assertTrue(streetCursor.getEdgeEnd() == -1);
  assertTrue(yearCursor.getEdgeStart() == -1);
  assertTrue(yearCursor.getEdgeEnd() == -1);
  this.close(dataCursor);
}

Fixed version (ground truth):
public void testNavigator() throws DataException, OLAPException {
  ICubeQueryDefinition cqd=creator.createMirroredQueryDefinition();
  BirtCubeView cubeView=new BirtCubeView(new CubeQueryExecutor(cqd,de.getSession(),this.scope,de.getContext()));
  CubeCursor dataCursor=cubeView.getCubeCursor(new StopSign());
  EdgeCursor rowCursor=cubeView.getRowEdgeView().getEdgeCursor();
  EdgeCursor columnCursor=cubeView.getColumnEdgeView().getEdgeCursor();
  DimensionCursor countryCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(0);
  DimensionCursor cityCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(1);
  DimensionCursor streetCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(2);
  DimensionCursor yearCursor=(DimensionCursor)columnCursor.getDimensionCursor().get(3);
  DimensionCursor productLineCursor=(DimensionCursor)rowCursor.getDimensionCursor().get(0);
  DimensionCursor productNameCursor=(DimensionCursor)rowCursor.getDimensionCursor().get(1);
  columnCursor.beforeFirst();
  assertTrue(columnCursor.isBeforeFirst());
  assertTrue(countryCursor.isBeforeFirst());
  assertTrue(cityCursor.isBeforeFirst());
  assertTrue(streetCursor.isBeforeFirst());
  assertTrue(yearCursor.isBeforeFirst());
  columnCursor.afterLast();
  assertTrue(columnCursor.isAfterLast());
  assertTrue(countryCursor.isAfterLast());
  assertTrue(cityCursor.isAfterLast());
  assertTrue(streetCursor.isAfterLast());
  assertTrue(yearCursor.isAfterLast());
  columnCursor.first();
  countryCursor.afterLast();
  cityCursor.afterLast();
  streetCursor.afterLast();
  yearCursor.afterLast();
  assertTrue(countryCursor.isAfterLast());
  assertTrue(cityCursor.isAfterLast());
  assertTrue(streetCursor.isAfterLast());
  assertTrue(yearCursor.isAfterLast());
  columnCursor.first();
  columnCursor.next();
  cityCursor.afterLast();
  streetCursor.afterLast();
  yearCursor.afterLast();
  assertTrue(countryCursor.isFirst());
  assertTrue(cityCursor.isAfterLast());
  assertTrue(streetCursor.isAfterLast());
  assertTrue(yearCursor.isAfterLast());
  columnCursor.first();
  assertTrue(columnCursor.isFirst());
  assertTrue(countryCursor.isFirst());
  assertTrue(cityCursor.isFirst());
  assertTrue(streetCursor.isFirst());
  assertTrue(yearCursor.isFirst());
  columnCursor.last();
  assertTrue(columnCursor.last());
  assertTrue(countryCursor.last());
  assertTrue(cityCursor.last());
  assertTrue(streetCursor.last());
  assertTrue(yearCursor.last());
  columnCursor.setPosition(5);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.setPosition(85);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.setPosition(220);
  try {
    countryCursor.getObject("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  OLAPException e) {
  }
  columnCursor.setPosition(225);
  columnCursor.previous();
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.setPosition(86);
  columnCursor.previous();
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.relative(6);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.next();
  columnCursor.next();
  columnCursor.next();
  columnCursor.setPosition(1);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.setPosition(80);
  streetCursor.setPosition(1);
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.beforeFirst();
  columnCursor.setPosition(80);
  columnCursor.next();
  countryCursor.next();
  assertTrue(countryCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(cityCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(streetCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  assertTrue(yearCursor.getObject("String_Node_Str").equals("String_Node_Str"));
  columnCursor.afterLast();
  try {
    streetCursor.getObject("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  OLAPException e) {
  }
  columnCursor.beforeFirst();
  columnCursor.next();
  assertTrue(countryCursor.getEdgeStart() == 0);
  assertTrue(countryCursor.getEdgeEnd() == 79);
  assertTrue(cityCursor.getEdgeStart() == 0);
  assertTrue(cityCursor.getEdgeEnd() == 19);
  assertTrue(streetCursor.getEdgeStart() == 0);
  assertTrue(streetCursor.getEdgeEnd() == 4);
  assertTrue(yearCursor.getEdgeStart() == 0);
  assertTrue(yearCursor.getEdgeEnd() == 0);
  columnCursor.beforeFirst();
  columnCursor.setPosition(1);
  assertTrue(countryCursor.getEdgeStart() == 0);
  assertTrue(countryCursor.getEdgeEnd() == 79);
  assertTrue(cityCursor.getEdgeStart() == 0);
  assertTrue(cityCursor.getEdgeEnd() == 19);
  assertTrue(streetCursor.getEdgeStart() == 0);
  assertTrue(streetCursor.getEdgeEnd() == 4);
  assertTrue(yearCursor.getEdgeStart() == 1);
  assertTrue(yearCursor.getEdgeEnd() == 1);
  columnCursor.setPosition(81);
  assertTrue(countryCursor.getEdgeStart() == 80);
  assertTrue(countryCursor.getEdgeEnd() == 119);
  assertTrue(cityCursor.getEdgeStart() == 80);
  assertTrue(cityCursor.getEdgeEnd() == 99);
  assertTrue(streetCursor.getEdgeStart() == 80);
  assertTrue(streetCursor.getEdgeEnd() == 84);
  assertTrue(yearCursor.getEdgeStart() == 81);
  assertTrue(yearCursor.getEdgeEnd() == 81);
  columnCursor.setPosition(146);
  assertTrue(countryCursor.getEdgeStart() == 120);
  assertTrue(countryCursor.getEdgeEnd() == 159);
  assertTrue(cityCursor.getEdgeStart() == 140);
  assertTrue(cityCursor.getEdgeEnd() == 159);
  assertTrue(streetCursor.getEdgeStart() == 145);
  assertTrue(streetCursor.getEdgeEnd() == 149);
  assertTrue(yearCursor.getEdgeStart() == 146);
  assertTrue(yearCursor.getEdgeEnd() == 146);
  columnCursor.beforeFirst();
  columnCursor.setPosition(220);
  assertTrue(countryCursor.getEdgeStart() == -1);
  assertTrue(countryCursor.getEdgeEnd() == -1);
  assertTrue(cityCursor.getEdgeStart() == -1);
  assertTrue(cityCursor.getEdgeEnd() == -1);
  assertTrue(streetCursor.getEdgeStart() == -1);
  assertTrue(streetCursor.getEdgeEnd() == -1);
  assertTrue(yearCursor.getEdgeStart() == -1);
  assertTrue(yearCursor.getEdgeEnd() == -1);
  this.close(dataCursor);
}