diff --git a/src/wallet/CMakeLists.txt b/src/wallet/CMakeLists.txt index 261d453e2..a6fc37dec 100644 --- a/src/wallet/CMakeLists.txt +++ b/src/wallet/CMakeLists.txt @@ -58,6 +58,6 @@ target_link_libraries(wallet ${Boost_SERIALIZATION_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} + ${Boost_REGEX_LIBRARY} ${EXTRA_LIBRARIES}) - diff --git a/src/wallet/wallet2_api.cpp b/src/wallet/wallet2_api.cpp index 4855d34f3..ffb18c317 100644 --- a/src/wallet/wallet2_api.cpp +++ b/src/wallet/wallet2_api.cpp @@ -32,12 +32,17 @@ #include "wallet2.h" #include +unsigned int epee::g_test_dbg_lock_sleep = 0; + namespace Bitmonero { struct WalletManagerImpl; namespace { static WalletManagerImpl * g_walletManager = nullptr; + + + } @@ -65,6 +70,8 @@ WalletImpl::WalletImpl() } +Wallet::~Wallet() {} + WalletImpl::~WalletImpl() { //delete m_wallet; @@ -103,6 +110,11 @@ bool WalletImpl::create(const std::string &path, const std::string &password, co return true; } +std::string WalletImpl::seed() const +{ + return ""; +} + ///////////////////////// WalletManager implementation ///////////////////////// @@ -111,13 +123,16 @@ class WalletManagerImpl : public WalletManager public: Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language); + Wallet * openWallet(const std::string &path, const std::string &password); + bool walletExists(const std::string &path); + int lastError() const; private: WalletManagerImpl() {} friend struct WalletManagerFactory; }; -Wallet *WalletManager::createWallet(const std::string &path, const std::string &password, +Wallet *WalletManagerImpl::createWallet(const std::string &path, const std::string &password, const std::string &language) { WalletImpl * wallet = new WalletImpl(); @@ -131,6 +146,22 @@ Wallet *WalletManager::createWallet(const std::string &path, const std::string & } +Wallet *WalletManagerImpl::openWallet(const std::string &path, const std::string &password) +{ + return nullptr; +} + +bool WalletManagerImpl::walletExists(const std::string &path) +{ + return false; +} + +int WalletManagerImpl::lastError() const +{ + return 0; +} + + ///////////////////// WalletManagerFactory implementation ////////////////////// WalletManager *WalletManagerFactory::getWalletManager() { @@ -142,4 +173,7 @@ WalletManager *WalletManagerFactory::getWalletManager() } + + + } diff --git a/src/wallet/wallet2_api.h b/src/wallet/wallet2_api.h index b7e1f31a1..e1cd29de1 100644 --- a/src/wallet/wallet2_api.h +++ b/src/wallet/wallet2_api.h @@ -54,13 +54,13 @@ struct Wallet struct WalletManager { //! creates new wallet - Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language); + virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language) = 0; //! opens existing wallet - Wallet * openWallet(const std::string &path, const std::string &password); + virtual Wallet * openWallet(const std::string &path, const std::string &password) = 0; - bool walletExists(const std::string &path); + virtual bool walletExists(const std::string &path) = 0; - int lastError() const; + virtual int lastError() const = 0; }; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 990be9143..71de09cfc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -54,7 +54,7 @@ else () endif() endif () -add_subdirectory(core_tests) +#add_subdirectory(core_tests) add_subdirectory(crypto) add_subdirectory(functional_tests) add_subdirectory(performance_tests) @@ -63,6 +63,7 @@ add_subdirectory(unit_tests) add_subdirectory(difficulty) add_subdirectory(hash) add_subdirectory(net_load_tests) +add_subdirectory(libwallet_api_tests) # add_subdirectory(daemon_tests) diff --git a/tests/libwallet_api_tests/CMakeLists.txt b/tests/libwallet_api_tests/CMakeLists.txt new file mode 100644 index 000000000..e60947084 --- /dev/null +++ b/tests/libwallet_api_tests/CMakeLists.txt @@ -0,0 +1,59 @@ +# Copyright (c) 2014-2016, The Monero Project +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are +# permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this list of +# conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, this list +# of conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its contributors may be +# used to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(libwallet_api_tests_sources + main.cpp +) + +set(libwallet_api_tests_headers + ) + +add_executable(libwallet_api_tests + ${libwallet_api_tests_sources} + ${libwallet_api_tests_headers}) + +target_link_libraries(libwallet_api_tests + LINK_PRIVATE + wallet + ${GTEST_MAIN_LIBRARIES} + ${EXTRA_LIBRARIES}) + +set_property(TARGET libwallet_api_tests + PROPERTY + FOLDER "tests") + +if (NOT MSVC) + set_property(TARGET libwallet_api_tests + APPEND_STRING + PROPERTY + COMPILE_FLAGS " -Wno-undef -Wno-sign-compare") +endif () + +add_test( + NAME libwallet_api_tests + COMMAND libwallet_api_tests) diff --git a/tests/libwallet_api_tests/main.cpp b/tests/libwallet_api_tests/main.cpp new file mode 100644 index 000000000..ab3bba40a --- /dev/null +++ b/tests/libwallet_api_tests/main.cpp @@ -0,0 +1,69 @@ +// Copyright (c) 2014-2016, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#include "gtest/gtest.h" +#include "wallet/wallet2_api.h" + +//unsigned int epee::g_test_dbg_lock_sleep = 0; + + + +struct WalletManagerTest : public testing::Test +{ + Bitmonero::WalletManager * wmgr; + + WalletManagerTest() + { + wmgr = Bitmonero::WalletManagerFactory::getWalletManager(); + } + + +}; + +TEST(WalletFactoryTest, WalletFactoryReturnsWalletManager) +{ + Bitmonero::WalletManager * wmgr = Bitmonero::WalletManagerFactory::getWalletManager(); + EXPECT_NE(wmgr, nullptr); +} + + +TEST_F(WalletManagerTest, WalletManagerReturnsCreatesWallet) +{ + Bitmonero::Wallet * wallet = wmgr->createWallet("test_wallet", "password", "en_US"); + EXPECT_TRUE(wallet != nullptr); + +} + +int main(int argc, char** argv) +{ + //epee::debug::get_set_enable_assert(true, false); + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}