aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Kitaev <mbg033@gmail.com>2016-06-16 16:42:33 +0300
committerIlya Kitaev <mbg033@gmail.com>2016-06-23 16:01:41 +0300
commit85a632244ef97a500a17a9954914c52487422c5e (patch)
tree9685f31a01a906cc2dbc08f0e34c8f49ceaeb24d
parentwallet::default_mixin exposed to public interface as (diff)
downloadmonero-85a632244ef97a500a17a9954914c52487422c5e.tar.xz
double/string to monero integer convertion methods
-rw-r--r--src/wallet/api/wallet.cpp17
-rw-r--r--src/wallet/wallet2_api.h2
-rw-r--r--tests/libwallet_api_tests/main.cpp16
3 files changed, 33 insertions, 2 deletions
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
index f6d7a561e..1f414b3bf 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -36,6 +36,7 @@
#include "mnemonics/electrum-words.h"
#include <boost/format.hpp>
+#include <sstream>
using namespace std;
using namespace cryptonote;
@@ -122,6 +123,22 @@ string Wallet::displayAmount(uint64_t amount)
return cryptonote::print_money(amount);
}
+uint64_t Wallet::amountFromString(const string &amount)
+{
+ uint64_t result;
+ cryptonote::parse_amount(result, amount);
+ return result;
+}
+
+uint64_t Wallet::amountFromDouble(double amount)
+{
+ std::stringstream ss;
+ ss << std::fixed << std::setprecision(CRYPTONOTE_DISPLAY_DECIMAL_POINT) << amount;
+ return amountFromString(ss.str());
+}
+
+
+
///////////////////////// WalletImpl implementation ////////////////////////
WalletImpl::WalletImpl(bool testnet)
:m_wallet(nullptr), m_status(Wallet::Status_Ok), m_trustedDaemon(false),
diff --git a/src/wallet/wallet2_api.h b/src/wallet/wallet2_api.h
index 62231820b..34c18f77f 100644
--- a/src/wallet/wallet2_api.h
+++ b/src/wallet/wallet2_api.h
@@ -160,6 +160,8 @@ struct Wallet
virtual uint64_t balance() const = 0;
virtual uint64_t unlockedBalance() const = 0;
static std::string displayAmount(uint64_t amount);
+ static uint64_t amountFromString(const std::string &amount);
+ static uint64_t amountFromDouble(double amount);
// TODO?
// virtual uint64_t unlockedDustBalance() const = 0;
virtual bool refresh() = 0;
diff --git a/tests/libwallet_api_tests/main.cpp b/tests/libwallet_api_tests/main.cpp
index 935cfd884..849d76e1b 100644
--- a/tests/libwallet_api_tests/main.cpp
+++ b/tests/libwallet_api_tests/main.cpp
@@ -247,7 +247,7 @@ TEST_F(WalletManagerTest, WalletManagerChangesPassword)
ASSERT_TRUE(wallet1->setPassword(WALLET_PASS2));
ASSERT_TRUE(wmgr->closeWallet(wallet1));
Bitmonero::Wallet * wallet2 = wmgr->openWallet(WALLET_NAME, WALLET_PASS2);
- ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok);
+ ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok);quint64
ASSERT_TRUE(wallet2->seed() == seed1);
ASSERT_TRUE(wmgr->closeWallet(wallet2));
Bitmonero::Wallet * wallet3 = wmgr->openWallet(WALLET_NAME, WALLET_PASS);
@@ -390,7 +390,19 @@ TEST_F(WalletTest1, WalletRefresh)
}
+TEST_F(WalletTest1, WalletConvertsToString)
+{
+ std::string strAmount = Bitmonero::Wallet::displayAmount(AMOUNT_5XMR);
+ ASSERT_TRUE(AMOUNT_5XMR == Bitmonero::Wallet::amountFromString(strAmount));
+
+ ASSERT_TRUE(AMOUNT_5XMR == Bitmonero::Wallet::amountFromDouble(5.0));
+ ASSERT_TRUE(AMOUNT_10XMR == Bitmonero::Wallet::amountFromDouble(10.0));
+ ASSERT_TRUE(AMOUNT_1XMR == Bitmonero::Wallet::amountFromDouble(1.0));
+
+}
+
+/*
TEST_F(WalletTest1, WalletTransaction)
{
Bitmonero::Wallet * wallet1 = wmgr->openWallet(CURRENT_SRC_WALLET, TESTNET_WALLET_PASS, true);
@@ -415,7 +427,7 @@ TEST_F(WalletTest1, WalletTransaction)
ASSERT_FALSE(wallet1->balance() == balance);
ASSERT_TRUE(wmgr->closeWallet(wallet1));
}
-
+*/
TEST_F(WalletTest1, WalletHistory)
{
Bitmonero::Wallet * wallet1 = wmgr->openWallet(CURRENT_SRC_WALLET, TESTNET_WALLET_PASS, true);