I wrote a simple quadratic function solver with unit tests. Can anyone check if this is okay?
Quadratic function class
public class QuadraticFunction {
private Integer a,b,c;
public QuadraticFunction(Integer a, Integer b, Integer c) {
this.a = a;
this.b = b;
this.c = c;
}
public Result calculate() throws NullPointerException{
if(calculateDelta()>0){
return new DeltaBiggerThanZero(calculateX1(),calculateX2());
}else if(calculateDelta() == 0){
return new DeltaEqualsZero(calculateOneRoot());
}else{
return new NoSolution();
}
}
private Double calculateDelta(){
return Math.pow(b,2) - 4*a*c;
}
private Double rootOfDelta(){
return Math.sqrt(calculateDelta());
}
private Double calculateX1(){
return (-b-rootOfDelta())/2*a;
}
private Double calculateX2(){
return (-b+rootOfDelta())/2*a;
}
private Double calculateOneRoot(){
return Double.valueOf((-b)/2*a);
}
Result class example
final public class DeltaBiggerThanZero implements Result{
private Double x1, x2;
public Double getX1() {
return x1;
}
public Double getX2() {
return x2;
}
public DeltaBiggerThanZero(Double x1, Double x2) {
this.x1 = x1;
this.x2 = x2;
}
public String printSimpleResult() {
return "Rozwiązaniem równiania jest: x1="+x1+" x2="+x2;
}
}
This is a test:
public class QuadraticFunctionTest {
@Test
public void testIfEquationHasTwoResults() throws Exception {
QuadraticFunction quadraticFunction = new QuadraticFunction(1,-4,-5);
Result result = new DeltaBiggerThanZero(-1.0,5.0);
assertEquals(quadraticFunction.calculate().getX1(), result.getX1());
assertEquals(quadraticFunction.calculate().getX2(), result.getX2());
}
@Test
public void testIfEquationHasOneResult(){
QuadraticFunction quadraticFunction = new QuadraticFunction(1,6,9);
Result result = new DeltaEqualsZero(-3.0);
assertEquals(result.getX1(), quadraticFunction.calculate().getX1());
}
@Test
public void testIfTheresNoSolution() throws Exception {
QuadraticFunction quadraticFunction = new QuadraticFunction(1,2,5);
Result result = new NoSolution();
assertEquals(quadraticFunction.calculate().getX1(), null);
assertEquals(quadraticFunction.calculate().getX2(), null);
}
}