C_CPP/src/10_PITF/Testat/Money.cpp

66 lines
1.7 KiB
C++

#include "Money.h"
Money::Money(int value, Currency currency) : value(value), currency(currency) {
}
Money& Money::operator=(Money money) {
value = money.getValue();
currency = money.getCurrency();
return *this;
}
Money &Money::operator=(Money *money) {
value = money->getValue();
currency = money->getCurrency();
return *this;
}
Money Money::operator+(Money &a) {
if(currency == a.currency) {
return Money(value + a.value);
}else return Money(-1, Currency(CurrencyValue::USD));
}
Money Money::operator-(Money &a) {
if(currency == a.currency) {
return Money(value - a.value);
}else return Money(-1, Currency(CurrencyValue::USD));
}
const std::unique_ptr<Money> Money::operator++(int) {
value++;
return std::make_unique<Money>(this);
}
const std::unique_ptr<Money> Money::operator--(int) {
value--;
return std::make_unique<Money>(this);
}
int Money::getValue() {
return value;
}
Currency Money::getCurrency() {
return currency;
}
std::unique_ptr<Money> Money::operator+(std::unique_ptr<Money> &a) {
if(currency == a->getCurrency()) {
return std::make_unique<Money>(Money(value + a->getValue()));
}else return std::make_unique<Money>(Money(-1, Currency(CurrencyValue::USD)));
}
std::unique_ptr<Money> Money::operator-(std::unique_ptr<Money> &a) {
if(currency == a->getCurrency()) {
return std::make_unique<Money>(Money(value - a->getValue()));
}else return std::make_unique<Money>(Money(-1, Currency(CurrencyValue::USD)));
}
std::unique_ptr<Money> Money::operator=(std::unique_ptr<Money> money) {
value = money->getValue();
currency = money->getCurrency();
return std::make_unique<Money>(Money(value, currency));
}