Skip to content

Commit

Permalink
Fix single null value handling in
Browse files Browse the repository at this point in the history
VerbruikKostenOverzicht.getTotaalStroomKosten()
  • Loading branch information
Rob Wiegman committed Aug 19, 2019
1 parent e875887 commit 2311d16
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ class StandbyPowerInPeriod {
this.costsOfStandByPower = standByPowerVko.getTotaalStroomKosten();
this.totalCostsOfPower = actualVko.getTotaalStroomKosten();

percentageOfTotalCost = costsOfStandByPower.divide(totalCostsOfPower, 2, HALF_UP)
.multiply(BigDecimal.valueOf(100)).setScale(0, HALF_UP);
if (this.costsOfStandByPower != null && this.totalCostsOfPower != null) {
percentageOfTotalCost = costsOfStandByPower.divide(totalCostsOfPower, 2, HALF_UP)
.multiply(BigDecimal.valueOf(100)).setScale(0, HALF_UP);

}
}

private StandbyPowerInPeriod() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package nl.homeserver.energie.verbruikkosten;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Objects;

import lombok.Getter;
import lombok.Setter;
Expand Down Expand Up @@ -32,9 +34,9 @@ public class VerbruikKostenOverzicht {
private BigDecimal gasKosten;

public BigDecimal getTotaalStroomKosten() {
if (stroomKostenNormaal != null && stroomKostenDal != null) {
return stroomKostenDal.add(stroomKostenNormaal);
}
return null;
return Arrays.stream(new BigDecimal[] { stroomKostenNormaal, stroomKostenDal })
.filter(Objects::nonNull)
.reduce(BigDecimal::add)
.orElse(null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,10 @@

import org.junit.Test;

import nl.homeserver.energie.verbruikkosten.VerbruikKostenOverzicht;
import nl.homeserver.energie.verbruikkosten.VerbruikKostenOverzichten;

public class VerbruikKostenOverzichtenTest {

@Test
public void whenAverageToSingleThenSingleVerbuikKostenOverichWithAveragesReturned() {
public void whenAverageToSingleThenSingleVerbuikKostenOverichtWithAveragesReturned() {
final VerbruikKostenOverzicht verbruikKostenOverzicht1 = new VerbruikKostenOverzicht();
verbruikKostenOverzicht1.setGasVerbruik(new BigDecimal(42.023));
verbruikKostenOverzicht1.setGasKosten(new BigDecimal(10.000));
Expand All @@ -31,6 +28,7 @@ public void whenAverageToSingleThenSingleVerbuikKostenOverichWithAveragesReturne
verbruikKostenOverzicht2.setStroomKostenNormaal(new BigDecimal(9214.081));

final VerbruikKostenOverzichten verbruikKostenOverzichten = new VerbruikKostenOverzichten(List.of(verbruikKostenOverzicht1, verbruikKostenOverzicht2));

final VerbruikKostenOverzicht averagedVerbruikKostenOverzicht = verbruikKostenOverzichten.averageToSingle();

assertThat(averagedVerbruikKostenOverzicht.getGasVerbruik()).isEqualTo(new BigDecimal("31.777"));
Expand All @@ -41,4 +39,39 @@ public void whenAverageToSingleThenSingleVerbuikKostenOverichWithAveragesReturne
assertThat(averagedVerbruikKostenOverzicht.getStroomKostenNormaal()).isEqualTo(new BigDecimal("5763.05"));
}

@Test
public void givenNotNullNormaalAndNotNullDalWhenGetTotaalStroomKostenThenSumOfNormaalAndDalReturned() {
final VerbruikKostenOverzicht verbruikKostenOverzicht = new VerbruikKostenOverzicht();
verbruikKostenOverzicht.setStroomKostenDal(new BigDecimal(3));
verbruikKostenOverzicht.setStroomKostenNormaal(new BigDecimal(1));

assertThat(verbruikKostenOverzicht.getTotaalStroomKosten()).isEqualTo(new BigDecimal(4));
}

@Test
public void givenNullNormaalAndNotNullDalWhenGetTotaalStroomKostenThenDalReturned() {
final VerbruikKostenOverzicht verbruikKostenOverzicht = new VerbruikKostenOverzicht();
verbruikKostenOverzicht.setStroomKostenDal(new BigDecimal(3));
verbruikKostenOverzicht.setStroomKostenNormaal(null);

assertThat(verbruikKostenOverzicht.getTotaalStroomKosten()).isEqualTo(new BigDecimal(3));
}

@Test
public void givenNotNullNormaalAndNullDalWhenGetTotaalStroomKostenThenNormaalReturned() {
final VerbruikKostenOverzicht verbruikKostenOverzicht = new VerbruikKostenOverzicht();
verbruikKostenOverzicht.setStroomKostenDal(null);
verbruikKostenOverzicht.setStroomKostenNormaal(new BigDecimal(3));

assertThat(verbruikKostenOverzicht.getTotaalStroomKosten()).isEqualTo(new BigDecimal(3));
}

@Test
public void givenNullNormaalAndDalWhenGetTotaalStroomKostenThenNullReturned() {
final VerbruikKostenOverzicht verbruikKostenOverzicht = new VerbruikKostenOverzicht();
verbruikKostenOverzicht.setStroomKostenDal(null);
verbruikKostenOverzicht.setStroomKostenNormaal(null);

assertThat(verbruikKostenOverzicht.getTotaalStroomKosten()).isNull();
}
}

0 comments on commit 2311d16

Please sign in to comment.