Added condition for divide by zero check

This commit is contained in:
Yadukrishnan 2024-04-10 08:11:11 +02:00
parent 423e60577d
commit 2b430714bb
2 changed files with 14 additions and 0 deletions

View File

@ -45,6 +45,9 @@ public record ComplexNumber(double real, double imaginary) {
}
public ComplexNumber divide(ComplexNumber that) {
if(that.real == 0 && that.imaginary == 0 ){
throw new ArithmeticException("Division by 0 is now allowed!");
}
double c2d2 = Math.pow(that.real, 2) + Math.pow(that.imaginary, 2);
double newReal = (this.real * that.real + this.imaginary * that.imaginary) / c2d2;
double newImaginary = (this.imaginary * that.real - this.real * that.imaginary) / c2d2;

View File

@ -1,6 +1,7 @@
package com.baeldung.complexnumbers;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
@ -86,6 +87,16 @@ public class ComplexNumberOperationsUnitTest {
Assertions.assertTrue(isSame(sum, expected));
}
@Test
public void check_divide_by_zero() {
ComplexNumber complex1 = new ComplexNumber(1, 1);
ComplexNumber zero = new ComplexNumber(0, 0);
Exception exception = Assertions.assertThrows(ArithmeticException.class, () -> {
complex1.divide(zero);
});
Assertions.assertEquals(exception.getMessage(), "Division by 0 is now allowed!");
}
public boolean isSame(ComplexNumber result, ComplexNumber expected) {
return result.real() == expected.real() && result.imaginary() == expected.imaginary();
}