I need to test this method – compare()
. Can You get advice? How better I can do this(all part if, else-if, else).
public class AbsFigure { class AreaCompare implements Comparator<FigureGeneral> { @Override public int compare(FigureGeneral oneFigure, FigureGeneral twoFigure) { double firstValue = oneFigure.area(); double secondValue = twoFigure.area(); int result = 0; if (firstValue > secondValue) result = 1; else if (firstValue < secondValue) result = -1; else result = 0; return result; } }
After this recomendations – we have next picture (Thank YOU guys a lot!):
public AreaCompare areaCompare = new AreaCompare(); @Test public void testEqual() { FigureGeneral oneFigure = new Rectangle(2.0, 2.0, "triangle"); FigureGeneral twoFigure = new Rectangle(2.0, 2.0, "rectangle"); int result = areaCompare.compare(oneFigure, twoFigure); assertTrue("expected to be equal", result == 0); } @Test public void testGreaterThan() { FigureGeneral oneFigure = new Triangle(2.0, 2.0, "triangle"); FigureGeneral twoFigure = new Rectangle(1.0, 1.0, "rectangle"); int result = areaCompare.compare(oneFigure, twoFigure); assertTrue("expected to be greater than", result >= 1); } @Test public void testLessThan() { FigureGeneral oneFigure = new Rectangle(1.0, 1.0, "rectangle"); FigureGeneral twoFigure = new Triangle(2.0, 2.0, "triangle"); int result = areaCompare.compare(oneFigure, twoFigure); assertTrue("expected to be less than", result <= -1);
All is normal testing now.
Advertisement
Answer
Just instantiate your comparator class and pass in objects:
public class Test extends TestCase { class AreaCompare implements Comparator<FigureGeneral> { @Override public int compare(FigureGeneral oneFigure, FigureGeneral twoFigure) { double firstValue = oneFigure.area(); double secondValue = twoFigure.area(); int result = 0; if (firstValue > secondValue) { result = 1; } else if (firstValue < secondValue) { result = -1; } else { result = 0; } return result; } } private final AreaCompare areaCompare = new AreaCompare(); @Test public void testEqual() { FigureGeneral oneFigure = new FigureGeneral(); FigureGeneral twoFigure = new FigureGeneral(); int result = areaCompare.compare(oneFigure, twoFigure); assertTrue("expected to be equal", result == 0); } @Test public void testGreaterThan() { FigureGeneral oneFigure = new FigureGeneral(); FigureGeneral twoFigure = new FigureGeneral(); int result = areaCompare.compare(oneFigure, twoFigure); assertTrue("expected to be greater than", result >= 1); } @Test public void testLessThan() { FigureGeneral oneFigure = new FigureGeneral(); FigureGeneral twoFigure = new FigureGeneral(); int result = areaCompare.compare(oneFigure, twoFigure); assertTrue("expected to be less than", result <= -1); } }