Merge pull request #1033 from sipa/wait
[novacoin.git] / src / qt / test / uritests.cpp
1 #include "uritests.h"
2 #include "../guiutil.h"
3 #include "../walletmodel.h"
4
5 #include <QUrl>
6
7 /*
8 struct SendCoinsRecipient
9 {
10     QString address;
11     QString label;
12     qint64 amount;
13 };
14 */
15
16 void URITests::uriTests()
17 {
18     SendCoinsRecipient rv;
19     QUrl uri;
20     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist="));
21     QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
22
23     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist="));
24     QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
25     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
26     QVERIFY(rv.label == QString());
27     QVERIFY(rv.amount == 0);
28
29     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Wikipedia Example Address"));
30     QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
31     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
32     QVERIFY(rv.label == QString("Wikipedia Example Address"));
33     QVERIFY(rv.amount == 0);
34
35     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001"));
36     QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
37     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
38     QVERIFY(rv.label == QString());
39     QVERIFY(rv.amount == 100000);
40
41     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001"));
42     QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
43     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
44     QVERIFY(rv.label == QString());
45     QVERIFY(rv.amount == 100100000);
46
47     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=Wikipedia Example"));
48     QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
49     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
50     QVERIFY(rv.amount == 10000000000);
51     QVERIFY(rv.label == QString("Wikipedia Example"));
52
53     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address"));
54     QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
55     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
56     QVERIFY(rv.label == QString());
57
58     QVERIFY(GUIUtil::parseBitcoinURI("bitcoin://175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address", &rv));
59     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
60     QVERIFY(rv.label == QString());
61
62     // We currently dont implement the message paramenter (ok, yea, we break spec...)
63     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address"));
64     QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
65
66     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example"));
67     QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
68
69     uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example"));
70     QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
71 }