package net.objectlab.kit.fxcalc;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.HashSet;
import java.util.Set;
import org.junit.Test;
public class CashTest {
@Test
public void testEquals() {
final Cash money = Cash.of("USD", 1L);
final Cash money2 = Cash.of("USD", 1L);
assertThat(money).isEqualTo(money2);
}
@Test
public void testHash() {
final Cash money = Cash.of("USD", 1L);
final Cash money2 = Cash.of("USD", 1L);
final Set<Cash> s = new HashSet<>();
s.add(money);
s.add(money2);
assertThat(s).hasSize(1);
}
@Test
public void testNegate() {
final Cash money = Cash.of("USD", 1L);
final CurrencyAmount money3 = money.negate();
assertThat(money3).isNotSameAs(money);
assertThat(money3).isEqualTo(Cash.of("USD", -1L));
}
@Test
public void testAdd() {
final Cash money = Cash.of("USD", 1L);
final Cash money2 = Cash.of("USD", 10L);
final CurrencyAmount money3 = money.add(money2);
assertThat(money3).isNotSameAs(money);
assertThat(money3).isEqualTo(Cash.of("USD", 11L));
final CurrencyAmount money4 = money2.add(money);
assertThat(money4).isNotSameAs(money);
assertThat(money4).isEqualTo(Cash.of("USD", 11L));
}
@Test
public void testSubtract() {
final Cash money = Cash.of("USD", 1L);
final Cash money2 = Cash.of("USD", 10L);
final CurrencyAmount money3 = money.subtract(money2);
assertThat(money3).isNotSameAs(money);
assertThat(money3).isEqualTo(Cash.of("USD", -9L));
final CurrencyAmount money4 = money2.subtract(money);
assertThat(money4).isNotSameAs(money);
assertThat(money4).isEqualTo(Cash.of("USD", 9));
}
@Test(expected = IllegalArgumentException.class)
public void testInvalidAdd() {
final Cash money = Cash.of("USD", 1L);
final Cash money2 = Cash.of("EUR", 10L);
money.add(money2);
}
@Test(expected = IllegalArgumentException.class)
public void testInvalidSubtract() {
final Cash money = Cash.of("USD", 1L);
final Cash money2 = Cash.of("EUR", 10L);
money.subtract(money2);
}
}