diff options
Diffstat (limited to 'junit4/src/test/java/junit/samples/money/Money.java')
-rw-r--r-- | junit4/src/test/java/junit/samples/money/Money.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/junit4/src/test/java/junit/samples/money/Money.java b/junit4/src/test/java/junit/samples/money/Money.java new file mode 100644 index 0000000..3d8c2fd --- /dev/null +++ b/junit4/src/test/java/junit/samples/money/Money.java @@ -0,0 +1,78 @@ +package junit.samples.money; + +/** + * A simple Money. + * + */ +public class Money implements IMoney { + + private int fAmount; + private String fCurrency; + + /** + * Constructs a money from the given amount and currency. + */ + public Money(int amount, String currency) { + fAmount= amount; + fCurrency= currency; + } + /** + * Adds a money to this money. Forwards the request to the addMoney helper. + */ + public IMoney add(IMoney m) { + return m.addMoney(this); + } + public IMoney addMoney(Money m) { + if (m.currency().equals(currency()) ) + return new Money(amount()+m.amount(), currency()); + return MoneyBag.create(this, m); + } + public IMoney addMoneyBag(MoneyBag s) { + return s.addMoney(this); + } + public int amount() { + return fAmount; + } + public String currency() { + return fCurrency; + } + @Override + public boolean equals(Object anObject) { + if (isZero()) + if (anObject instanceof IMoney) + return ((IMoney)anObject).isZero(); + if (anObject instanceof Money) { + Money aMoney= (Money)anObject; + return aMoney.currency().equals(currency()) + && amount() == aMoney.amount(); + } + return false; + } + @Override + public int hashCode() { + if (fAmount == 0) + return 0; + return fCurrency.hashCode()+fAmount; + } + public boolean isZero() { + return amount() == 0; + } + public IMoney multiply(int factor) { + return new Money(amount()*factor, currency()); + } + public IMoney negate() { + return new Money(-amount(), currency()); + } + public IMoney subtract(IMoney m) { + return add(m.negate()); + } + @Override + public String toString() { + StringBuffer buffer = new StringBuffer(); + buffer.append("["+amount()+" "+currency()+"]"); + return buffer.toString(); + } + public /*this makes no sense*/ void appendTo(MoneyBag m) { + m.appendMoney(this); + } +}
\ No newline at end of file |