Changeset View
Changeset View
Standalone View
Standalone View
src/qt/test/uritests.cpp
// Copyright (c) 2009-2014 The Bitcoin Core developers | // Copyright (c) 2009-2014 The Bitcoin Core developers | ||||
// Copyright (c) 2017 The Bitcoin developers | |||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#include "uritests.h" | #include "uritests.h" | ||||
#include "chainparams.h" | |||||
#include "config.h" | #include "config.h" | ||||
#include "guiutil.h" | #include "guiutil.h" | ||||
#include "walletmodel.h" | #include "walletmodel.h" | ||||
#include <QUrl> | #include <QUrl> | ||||
void URITests::uriTestsBase58() { | void URITests::uriTestsBase58() { | ||||
SendCoinsRecipient rv; | SendCoinsRecipient rv; | ||||
QString scheme = | |||||
QString::fromStdString(Params(CBaseChainParams::MAIN).CashAddrPrefix()); | |||||
QUrl uri; | QUrl uri; | ||||
uri.setUrl(QString( | uri.setUrl(QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist=")); | ||||
"bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist=")); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | |||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist=")); | QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist=")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 0); | QVERIFY(rv.amount == 0); | ||||
uri.setUrl(QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=" | uri.setUrl(QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | ||||
QVERIFY(rv.label == QString("Wikipedia Example Address")); | QVERIFY(rv.label == QString("Wikipedia Example Address")); | ||||
QVERIFY(rv.amount == 0); | QVERIFY(rv.amount == 0); | ||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001")); | QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100000); | QVERIFY(rv.amount == 100000); | ||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001")); | QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100100000); | QVERIFY(rv.amount == 100100000); | ||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&" | QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&" | ||||
"label=Wikipedia Example")); | "label=Wikipedia Example")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | ||||
QVERIFY(rv.amount == 10000000000LL); | QVERIFY(rv.amount == 10000000000LL); | ||||
QVERIFY(rv.label == QString("Wikipedia Example")); | QVERIFY(rv.label == QString("Wikipedia Example")); | ||||
uri.setUrl(QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=" | uri.setUrl(QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(GUIUtil::parseBitcoinURI("bitcoincash://" | QVERIFY(GUIUtil::parseBitcoinURI(scheme, | ||||
"bitcoincash://" | |||||
"175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?" | "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?" | ||||
"message=Wikipedia Example Address", | "message=Wikipedia Example Address", | ||||
&rv)); | &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=" | QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1," | QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1," | ||||
"000&label=Wikipedia Example")); | "000&label=Wikipedia Example")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1," | QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1," | ||||
"000.0&label=Wikipedia Example")); | "000.0&label=Wikipedia Example")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
} | } | ||||
void URITests::uriTestsCashAddr() { | void URITests::uriTestsCashAddr() { | ||||
SendCoinsRecipient rv; | SendCoinsRecipient rv; | ||||
QUrl uri; | QUrl uri; | ||||
QString scheme = | |||||
QString::fromStdString(Params(CBaseChainParams::MAIN).CashAddrPrefix()); | |||||
uri.setUrl(QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?" | uri.setUrl(QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?" | ||||
"req-dontexist=")); | "req-dontexist=")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?dontexist=")); | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?dontexist=")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 0); | QVERIFY(rv.amount == 0); | ||||
uri.setUrl( | uri.setUrl( | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?label=" | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?label=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | ||||
QVERIFY(rv.label == QString("Wikipedia Example Address")); | QVERIFY(rv.label == QString("Wikipedia Example Address")); | ||||
QVERIFY(rv.amount == 0); | QVERIFY(rv.amount == 0); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=0.001")); | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=0.001")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100000); | QVERIFY(rv.amount == 100000); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1.001")); | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1.001")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100100000); | QVERIFY(rv.amount == 100100000); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=100&" | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=100&" | ||||
"label=Wikipedia Example")); | "label=Wikipedia Example")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | ||||
QVERIFY(rv.amount == 10000000000LL); | QVERIFY(rv.amount == 10000000000LL); | ||||
QVERIFY(rv.label == QString("Wikipedia Example")); | QVERIFY(rv.label == QString("Wikipedia Example")); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?message=" | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?message=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY( | QVERIFY(GUIUtil::parseBitcoinURI( | ||||
GUIUtil::parseBitcoinURI("bitcoincash://" | scheme, "bitcoincash://" | ||||
"qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?" | "qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?" | ||||
"message=Wikipedia Example Address", | "message=Wikipedia Example Address", | ||||
&rv)); | &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?req-message=" | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?req-message=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1," | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1," | ||||
"000&label=Wikipedia Example")); | "000&label=Wikipedia Example")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl(QString( | uri.setUrl(QString( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1," | "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1," | ||||
"000.0&label=Wikipedia Example")); | "000.0&label=Wikipedia Example")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
} | } | ||||
namespace { | namespace { | ||||
class UriTestConfig : public DummyConfig { | class UriTestConfig : public DummyConfig { | ||||
public: | public: | ||||
UriTestConfig(bool useCashAddr) : useCashAddr(useCashAddr) {} | UriTestConfig(bool useCashAddr) : useCashAddr(useCashAddr) {} | ||||
bool UseCashAddrEncoding() const override { return useCashAddr; } | bool UseCashAddrEncoding() const override { return useCashAddr; } | ||||
Show All 27 Lines |