Skip to content

Commit f1d807e

Browse files
committed
Add more tests for the BIP21 implementation
1 parent d1ae967 commit f1d807e

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/qt/test/uritests.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,35 @@ void URITests::uriTests()
5858
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address"));
5959
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
6060

61+
// Commas in amounts are not allowed.
6162
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example"));
6263
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
6364

6465
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example"));
6566
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
67+
68+
// There are two amount specifications. The last value wins.
69+
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&amount=200&label=Wikipedia Example"));
70+
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
71+
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
72+
QVERIFY(rv.amount == 20000000000LL);
73+
QVERIFY(rv.label == QString("Wikipedia Example"));
74+
75+
// The first amount value is correct. However, the second amount value is not valid. Hence, the URI is not valid.
76+
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&amount=1,000&label=Wikipedia Example"));
77+
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
78+
79+
// Test label containing a question mark ('?').
80+
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=?"));
81+
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
82+
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
83+
QVERIFY(rv.amount == 10000000000LL);
84+
QVERIFY(rv.label == QString("?"));
85+
86+
// Escape sequences are not supported.
87+
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=%3F"));
88+
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
89+
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
90+
QVERIFY(rv.amount == 10000000000LL);
91+
QVERIFY(rv.label == QString("%3F"));
6692
}

0 commit comments

Comments
 (0)