mirror of
https://github.com/aljazceru/lnd-manageJ.git
synced 2026-01-25 08:54:21 +01:00
reuse Coins.NONE object instance
This commit is contained in:
@@ -6,13 +6,16 @@ import java.util.Locale;
|
||||
|
||||
public record Coins(long milliSatoshis) implements Comparable<Coins> {
|
||||
private static final int SCALE = 3;
|
||||
public static final Coins NONE = Coins.ofSatoshis(0);
|
||||
public static final Coins NONE = new Coins(0);
|
||||
|
||||
public static Coins ofSatoshis(long satoshis) {
|
||||
return new Coins(satoshis * 1_000);
|
||||
return ofMilliSatoshis(satoshis * 1_000);
|
||||
}
|
||||
|
||||
public static Coins ofMilliSatoshis(long milliSatoshis) {
|
||||
if (milliSatoshis == 0) {
|
||||
return NONE;
|
||||
}
|
||||
return new Coins(milliSatoshis);
|
||||
}
|
||||
|
||||
@@ -24,10 +27,19 @@ public record Coins(long milliSatoshis) implements Comparable<Coins> {
|
||||
}
|
||||
|
||||
public Coins add(Coins summand) {
|
||||
if (summand.milliSatoshis == 0) {
|
||||
return this;
|
||||
}
|
||||
if (this.milliSatoshis == 0) {
|
||||
return summand;
|
||||
}
|
||||
return Coins.ofMilliSatoshis(milliSatoshis + summand.milliSatoshis);
|
||||
}
|
||||
|
||||
public Coins subtract(Coins subtrahend) {
|
||||
if (subtrahend.milliSatoshis == 0) {
|
||||
return this;
|
||||
}
|
||||
return Coins.ofMilliSatoshis(milliSatoshis - subtrahend.milliSatoshis);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import java.util.Locale;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
|
||||
@SuppressWarnings("PMD.GodClass")
|
||||
class CoinsTest {
|
||||
|
||||
private static final Coins ONE_COIN = Coins.ofSatoshis(100_000_000);
|
||||
@@ -22,6 +23,44 @@ class CoinsTest {
|
||||
assertThat(Coins.ofMilliSatoshis(400).add(Coins.ofMilliSatoshis(600))).isEqualTo(Coins.ofSatoshis(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
void zero_sum_is_none_object() {
|
||||
assertThat(Coins.ofMilliSatoshis(400).add(Coins.ofMilliSatoshis(-400))).isSameAs(Coins.NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void difference_resulting_in_zero_is_none_object() {
|
||||
assertThat(Coins.ofMilliSatoshis(400).subtract(Coins.ofMilliSatoshis(400))).isSameAs(Coins.NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void zero_milli_satoshis_is_non_object() {
|
||||
assertThat(Coins.ofMilliSatoshis(0)).isSameAs(Coins.NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void zero_satoshis_is_non_object() {
|
||||
assertThat(Coins.ofSatoshis(0)).isSameAs(Coins.NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void add_zero_gives_same_instance() {
|
||||
Coins original = Coins.ofSatoshis(1);
|
||||
assertThat(original.add(Coins.NONE)).isSameAs(original);
|
||||
}
|
||||
|
||||
@Test
|
||||
void adding_to_zero_gives_same_instance() {
|
||||
Coins original = Coins.ofSatoshis(1);
|
||||
assertThat(Coins.NONE.add(original)).isSameAs(original);
|
||||
}
|
||||
|
||||
@Test
|
||||
void subtract_zero_gives_same_instance() {
|
||||
Coins original = Coins.ofSatoshis(1);
|
||||
assertThat(original.subtract(Coins.NONE)).isSameAs(original);
|
||||
}
|
||||
|
||||
@Test
|
||||
void subtract() {
|
||||
assertThat(Coins.ofSatoshis(456).subtract(Coins.ofSatoshis(123))).isEqualTo(Coins.ofSatoshis(456 - 123));
|
||||
|
||||
Reference in New Issue
Block a user