@@ -58,9 +58,35 @@ void URITests::uriTests()
58
58
uri.setUrl (QString (" bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address" ));
59
59
QVERIFY (GUIUtil::parseBitcoinURI (uri, &rv));
60
60
61
+ // Commas in amounts are not allowed.
61
62
uri.setUrl (QString (" bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example" ));
62
63
QVERIFY (!GUIUtil::parseBitcoinURI (uri, &rv));
63
64
64
65
uri.setUrl (QString (" bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example" ));
65
66
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" ));
66
92
}
0 commit comments