testnet option, Wallet::balance(), Wallet::unlockedBalance()

This commit is contained in:
Ilya Kitaev 2016-03-31 12:48:41 +03:00
parent 8df820b301
commit caf0e02787
3 changed files with 27 additions and 17 deletions

View file

@ -72,6 +72,7 @@ public:
bool store(const std::string &path); bool store(const std::string &path);
bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit); bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit);
uint64_t balance() const; uint64_t balance() const;
uint64_t unlockedBalance() const;
bool connectToDaemon(); bool connectToDaemon();
private: private:
@ -279,6 +280,11 @@ uint64_t WalletImpl::balance() const
return m_wallet->balance(); return m_wallet->balance();
} }
uint64_t WalletImpl::unlockedBalance() const
{
return m_wallet->unlocked_balance();
}
bool WalletImpl::connectToDaemon() bool WalletImpl::connectToDaemon()
{ {
bool result = m_wallet->check_connection(); bool result = m_wallet->check_connection();
@ -304,7 +310,7 @@ public:
Wallet * createWallet(const std::string &path, const std::string &password, Wallet * createWallet(const std::string &path, const std::string &password,
const std::string &language, bool testnet); const std::string &language, bool testnet);
Wallet * openWallet(const std::string &path, const std::string &password, bool testnet); Wallet * openWallet(const std::string &path, const std::string &password, bool testnet);
virtual Wallet * recoveryWallet(const std::string &path, const std::string &memo); virtual Wallet * recoveryWallet(const std::string &path, const std::string &memo, bool testnet);
virtual bool closeWallet(Wallet *wallet); virtual bool closeWallet(Wallet *wallet);
bool walletExists(const std::string &path); bool walletExists(const std::string &path);
std::string errorString() const; std::string errorString() const;
@ -333,9 +339,9 @@ Wallet *WalletManagerImpl::openWallet(const std::string &path, const std::string
return wallet; return wallet;
} }
Wallet *WalletManagerImpl::recoveryWallet(const std::string &path, const std::string &memo) Wallet *WalletManagerImpl::recoveryWallet(const std::string &path, const std::string &memo, bool testnet)
{ {
WalletImpl * wallet = new WalletImpl(); WalletImpl * wallet = new WalletImpl(testnet);
wallet->recover(path, memo); wallet->recover(path, memo);
return wallet; return wallet;
} }

View file

@ -70,6 +70,9 @@ struct Wallet
virtual bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit) = 0; virtual bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit) = 0;
virtual bool connectToDaemon() = 0; virtual bool connectToDaemon() = 0;
virtual uint64_t balance() const = 0; virtual uint64_t balance() const = 0;
virtual uint64_t unlockedBalance() const = 0;
// TODO?
// virtual uint64_t unlockedDustBalance() const = 0;
}; };
/** /**
@ -85,7 +88,7 @@ struct WalletManager
* \param language Language to be used to generate electrum seed memo * \param language Language to be used to generate electrum seed memo
* \return Wallet instance (Wallet::status() needs to be called to check if created successfully) * \return Wallet instance (Wallet::status() needs to be called to check if created successfully)
*/ */
virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet) = 0; virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet = false) = 0;
/*! /*!
* \brief Opens existing wallet * \brief Opens existing wallet
@ -93,7 +96,7 @@ struct WalletManager
* \param password Password of wallet file * \param password Password of wallet file
* \return Wallet instance (Wallet::status() needs to be called to check if opened successfully) * \return Wallet instance (Wallet::status() needs to be called to check if opened successfully)
*/ */
virtual Wallet * openWallet(const std::string &path, const std::string &password, bool testnet) = 0; virtual Wallet * openWallet(const std::string &path, const std::string &password, bool testnet = false) = 0;
/*! /*!
* \brief recovers existing wallet using memo (electrum seed) * \brief recovers existing wallet using memo (electrum seed)
@ -101,7 +104,7 @@ struct WalletManager
* \param memo memo (25 words electrum seed) * \param memo memo (25 words electrum seed)
* \return Wallet instance (Wallet::status() needs to be called to check if recovered successfully) * \return Wallet instance (Wallet::status() needs to be called to check if recovered successfully)
*/ */
virtual Wallet * recoveryWallet(const std::string &path, const std::string &memo) = 0; virtual Wallet * recoveryWallet(const std::string &path, const std::string &memo, bool testnet = false) = 0;
/*! /*!
* \brief Closes wallet. In case operation succeded, wallet object deleted. in case operation failed, wallet object not deleted * \brief Closes wallet. In case operation succeded, wallet object deleted. in case operation failed, wallet object not deleted

View file

@ -95,7 +95,7 @@ struct WalletManagerTest : public testing::Test
TEST_F(WalletManagerTest, WalletManagerCreatesWallet) TEST_F(WalletManagerTest, WalletManagerCreatesWallet)
{ {
Bitmonero::Wallet * wallet = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG, true); Bitmonero::Wallet * wallet = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG);
ASSERT_TRUE(wallet->status() == Bitmonero::Wallet::Status_Ok); ASSERT_TRUE(wallet->status() == Bitmonero::Wallet::Status_Ok);
ASSERT_TRUE(!wallet->seed().empty()); ASSERT_TRUE(!wallet->seed().empty());
std::vector<std::string> words; std::vector<std::string> words;
@ -112,16 +112,16 @@ TEST_F(WalletManagerTest, WalletManagerCreatesWallet)
TEST_F(WalletManagerTest, WalletManagerOpensWallet) TEST_F(WalletManagerTest, WalletManagerOpensWallet)
{ {
Bitmonero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG, true); Bitmonero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG);
std::string seed1 = wallet1->seed(); std::string seed1 = wallet1->seed();
ASSERT_TRUE(wmgr->closeWallet(wallet1)); ASSERT_TRUE(wmgr->closeWallet(wallet1));
Bitmonero::Wallet * wallet2 = wmgr->openWallet(WALLET_NAME, WALLET_PASS, true); Bitmonero::Wallet * wallet2 = wmgr->openWallet(WALLET_NAME, WALLET_PASS);
ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok); ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok);
ASSERT_TRUE(wallet2->seed() == seed1); ASSERT_TRUE(wallet2->seed() == seed1);
std::cout << "** seed: " << wallet2->seed() << std::endl; std::cout << "** seed: " << wallet2->seed() << std::endl;
} }
/*
TEST_F(WalletManagerTest, WalletManagerChangesPassword) TEST_F(WalletManagerTest, WalletManagerChangesPassword)
{ {
Bitmonero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG); Bitmonero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG);
@ -145,7 +145,7 @@ TEST_F(WalletManagerTest, WalletManagerRecoversWallet)
std::string address1 = wallet1->address(); std::string address1 = wallet1->address();
ASSERT_FALSE(address1.empty()); ASSERT_FALSE(address1.empty());
ASSERT_TRUE(wmgr->closeWallet(wallet1)); ASSERT_TRUE(wmgr->closeWallet(wallet1));
deleteWallet(WALLET_NAME); Utils::deleteWallet(WALLET_NAME);
Bitmonero::Wallet * wallet2 = wmgr->recoveryWallet(WALLET_NAME, seed1); Bitmonero::Wallet * wallet2 = wmgr->recoveryWallet(WALLET_NAME, seed1);
ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok); ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok);
ASSERT_TRUE(wallet2->seed() == seed1); ASSERT_TRUE(wallet2->seed() == seed1);
@ -229,22 +229,23 @@ TEST_F(WalletManagerTest, WalletManagerStoresWallet4)
ASSERT_TRUE(wallet1->address() == address1); ASSERT_TRUE(wallet1->address() == address1);
ASSERT_TRUE(wmgr->closeWallet(wallet1)); ASSERT_TRUE(wmgr->closeWallet(wallet1));
} }
*/
TEST_F(WalletManagerTest, WalletShowsBalance) TEST_F(WalletManagerTest, WalletShowsBalance)
{ {
Bitmonero::Wallet * wallet1 = wmgr->openWallet(TESTNET_WALLET_NAME, TESTNET_WALLET_PASS, true); Bitmonero::Wallet * wallet1 = wmgr->openWallet(TESTNET_WALLET_NAME, TESTNET_WALLET_PASS, true);
std::string seed1 = wallet1->seed();
std::string address1 = wallet1->address();
ASSERT_TRUE(wallet1->balance() > 0); ASSERT_TRUE(wallet1->balance() > 0);
ASSERT_TRUE(wallet1->unlockedBalance() > 0);
uint64_t balance1 = wallet1->balance(); uint64_t balance1 = wallet1->balance();
uint64_t unlockedBalance1 = wallet1->unlockedBalance();
ASSERT_TRUE(wmgr->closeWallet(wallet1)); ASSERT_TRUE(wmgr->closeWallet(wallet1));
Bitmonero::Wallet * wallet2 = wmgr->openWallet(TESTNET_WALLET_NAME, TESTNET_WALLET_PASS, true); Bitmonero::Wallet * wallet2 = wmgr->openWallet(TESTNET_WALLET_NAME, TESTNET_WALLET_PASS, true);
ASSERT_TRUE(seed1 == wallet2->seed());
ASSERT_TRUE(address1 == wallet2->address());
ASSERT_TRUE(balance1 == wallet2->balance()); ASSERT_TRUE(balance1 == wallet2->balance());
std::cout << "wallet balance: " << wallet2->balance() << std::endl;
ASSERT_TRUE(unlockedBalance1 == wallet2->unlockedBalance());
std::cout << "wallet unlocked balance: " << wallet2->unlockedBalance() << std::endl;
ASSERT_TRUE(wmgr->closeWallet(wallet2)); ASSERT_TRUE(wmgr->closeWallet(wallet2));
} }