Update implemented check canFulfillOrder

This commit is contained in:
Lev
2021-06-12 21:50:58 -05:00
parent 15ec5b2550
commit 279051e997
2 changed files with 24 additions and 0 deletions

View File

@ -1,4 +1,5 @@
#include "Wallet.h" #include "Wallet.h"
#include "CSVReader.h"
Wallet::Wallet() Wallet::Wallet()
{ {
@ -68,3 +69,22 @@ std::string Wallet::toString()
} }
return s; return s;
} }
bool Wallet::canFulfillOrder(OrderBookEntry order)
{
std::vector<std::string> currs = CSVReader::tokenise(order.product, '/');
// ask
if(order.orderType == OrderBookType::ask)
{
double amount = order.amount;
std::string currency = currs[0];
return containsCurrency(currency, amount);
}
if(order.orderType == OrderBookType::bid)
{
double amount = order.amount * order.price;
std::string currency = currs[1];
return containsCurrency(currency, amount);
}
return false;
}

View File

@ -2,6 +2,7 @@
#include <string> #include <string>
#include <map> #include <map>
#include "OrderBookEntry.h"
class Wallet class Wallet
{ {
@ -16,6 +17,9 @@ class Wallet
/** check if the wallet contains at least this much currency */ /** check if the wallet contains at least this much currency */
bool containsCurrency(std::string type, double amount); bool containsCurrency(std::string type, double amount);
/** check if the wallet can cope with the ask or bid */
bool canFulfillOrder(OrderBookEntry order);
/** generate a string representation of the wallet */ /** generate a string representation of the wallet */
std::string toString(); std::string toString();