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 | ||||
// 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 "guiutil.h" | #include "guiutil.h" | ||||
#include "walletmodel.h" | #include "walletmodel.h" | ||||
#include <QUrl> | #include <QUrl> | ||||
void URITests::uriTests() { | static void runUriTests(const QString &addr, bool hasScheme) { | ||||
auto S = [&hasScheme](const QString &addr) { | |||||
return hasScheme ? addr : "bitcoincash:" + addr; | |||||
}; | |||||
SendCoinsRecipient rv; | SendCoinsRecipient rv; | ||||
QUrl uri; | QUrl uri; | ||||
uri.setUrl(QString( | uri.setUrl(QString(S(addr) + "?req-dontexist=")); | ||||
"bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist=")); | |||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
uri.setUrl( | uri.setUrl(QString(S(addr) + "?dontexist=")); | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist=")); | |||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString(addr)); | ||||
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(S(addr) + "?label=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString(addr)); | ||||
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(S(addr) + "?amount=0.001")); | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001")); | |||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString(addr)); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100000); | QVERIFY(rv.amount == 100000); | ||||
uri.setUrl( | uri.setUrl(QString(S(addr) + "?amount=1.001")); | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001")); | |||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString(addr)); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100100000); | QVERIFY(rv.amount == 100100000); | ||||
uri.setUrl( | uri.setUrl(QString(S(addr) + "?amount=100&" | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&" | |||||
"label=Wikipedia Example")); | "label=Wikipedia Example")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString(addr)); | ||||
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(S(addr) + "?message=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | QVERIFY(rv.address == QString(addr)); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(GUIUtil::parseBitcoinURI("bitcoincash://" | QVERIFY(GUIUtil::parseBitcoinURI( | ||||
"175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?" | "bitcoincash://" + addr + "?message=Wikipedia Example Address", &rv)); | ||||
"message=Wikipedia Example Address", | QVERIFY(rv.address == QString(addr)); | ||||
&rv)); | |||||
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); | |||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
uri.setUrl( | uri.setUrl(QString(S(addr) + "?req-message=" | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=" | |||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
uri.setUrl( | uri.setUrl(QString(S(addr) + "?amount=1," | ||||
QString("bitcoincash:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1," | |||||
"000&label=Wikipedia Example")); | "000&label=Wikipedia Example")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); | ||||
uri.setUrl( | uri.setUrl(QString(S(addr) + "?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(uri, &rv)); | ||||
} | } | ||||
void URITests::uriTests() { | |||||
// TODO: Update address when cashaddr is finalized | |||||
const QString cashaddr = | |||||
"bitcoincash:qznsljkyhz5kvs94qn3w5sddktpg553jvi2ks52"; | |||||
const QString legacy = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"; | |||||
runUriTests(legacy, false); | |||||
runUriTests(cashaddr, false); | |||||
} |