Skip to content

Commit 3da9ece

Browse files
added implemetation and test
Signed-off-by: Emmanuel Mireku Omari <[email protected]>
1 parent a642a30 commit 3da9ece

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.baeldung.math.percentagedifferecebetweentwonumbers;
2+
3+
public class PercentageDifferenceBetweenTwoNumbers {
4+
public static double calculatePercentageDifference(double V1, double V2) {
5+
double average = (V1 + V2) / 2;
6+
if (average == 0) {
7+
throw new IllegalArgumentException("The average of V1 and V2 cannot be zero.");
8+
}
9+
return Math.abs((V1 - V2) / average) * 100;
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.baeldung.PercentageDifferenceBetweenTwoNumbersTest;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
5+
6+
import com.baeldung.math.percentagedifferecebetweentwonumbers.PercentageDifferenceBetweenTwoNumbers;
7+
import org.junit.jupiter.api.Test;
8+
9+
public class PercentageDifferenceBetweenTwoNumbersTest {
10+
11+
@Test
12+
void calculatePercentageDifferenceBetweenTwoNumbers() {
13+
double V1 = 50.0;
14+
double V2 = 70.0;
15+
double expected = 33.33;
16+
double result = PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V1, V2);
17+
assertEquals(expected, result, 0.01, "Percentage difference should be correctly calculated.");
18+
}
19+
20+
@Test
21+
void whenV1AndV2AreEqual_thenPercentageDifferenceIsZero() {
22+
double V1 = 50.0;
23+
double V2 = 50.0;
24+
double expected = 0.0;
25+
double result = PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V1, V2);
26+
assertEquals(
27+
expected, result, "Percentage difference should be zero when both values are equal.");
28+
}
29+
30+
@Test
31+
void whenV1IsGreaterThanV2_thenCalculateCorrectPercentageDifference() {
32+
double V1 = 70.0;
33+
double V2 = 50.0;
34+
double expected = 33.33;
35+
double result = PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V1, V2);
36+
assertEquals(expected, result, 0.01, "Percentage difference should be correctly calculated.");
37+
}
38+
39+
@Test
40+
void whenV2IsGreaterThanV1_thenCalculateCorrectPercentageDifference() {
41+
double V1 = 50.0;
42+
double V2 = 70.0;
43+
double expected = 33.33;
44+
double result = PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V1, V2);
45+
assertEquals(expected, result, 0.01, "Percentage difference should be correctly calculated.");
46+
}
47+
48+
@Test
49+
void whenOneValueIsZero_thenCalculateCorrectPercentageDifference() {
50+
double V1 = 0.0;
51+
double V2 = 50.0;
52+
double expected = 200.0;
53+
double result = PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V1, V2);
54+
assertEquals(
55+
expected,
56+
result,
57+
"Percentage difference should be correctly calculated when one value is zero.");
58+
}
59+
60+
@Test
61+
void whenAverageIsZero_thenThrowIllegalArgumentException() {
62+
double V1 = -50.0;
63+
double V2 = 50.0;
64+
assertThrows(
65+
IllegalArgumentException.class,
66+
() -> {
67+
PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V1, V2);
68+
},
69+
"Should throw IllegalArgumentException when the average of V1 and V2 is zero.");
70+
}
71+
72+
@Test
73+
void whenV1AndV2AreSwapped_thenPercentageDifferenceIsSame() {
74+
double V1 = 70.0;
75+
double V2 = 50.0;
76+
double expecgit ted = PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V1, V2);
77+
double result = PercentageDifferenceBetweenTwoNumbers.calculatePercentageDifference(V2, V1);
78+
assertEquals(
79+
expected,
80+
result,
81+
0.01,
82+
"Percentage difference should be the same when V1 and V2 are swapped.");
83+
}
84+
}

0 commit comments

Comments
 (0)