Merge pull request #1033 from sipa/wait
[novacoin.git] / src / qt / test / urltests.cpp
1 #include "urltests.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 URLTests::urlTests()
17 {
18     SendCoinsRecipient rv;
19     QUrl url;
20     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist="));
21     QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv));
22
23     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist="));
24     QVERIFY(GUIUtil::parseBitcoinURL(url, &rv));
25     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
26     QVERIFY(rv.label == QString());
27     QVERIFY(rv.amount == 0);
28
29     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Wikipedia Example Address"));
30     QVERIFY(GUIUtil::parseBitcoinURL(url, &rv));
31     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
32     QVERIFY(rv.label == QString("Wikipedia Example Address"));
33     QVERIFY(rv.amount == 0);
34
35     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001"));
36     QVERIFY(GUIUtil::parseBitcoinURL(url, &rv));
37     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
38     QVERIFY(rv.label == QString());
39     QVERIFY(rv.amount == 100000);
40
41     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001"));
42     QVERIFY(GUIUtil::parseBitcoinURL(url, &rv));
43     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
44     QVERIFY(rv.label == QString());
45     QVERIFY(rv.amount == 100100000);
46
47     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=Wikipedia Example"));
48     QVERIFY(GUIUtil::parseBitcoinURL(url, &rv));
49     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
50     QVERIFY(rv.amount == 10000000000);
51     QVERIFY(rv.label == QString("Wikipedia Example"));
52
53     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address"));
54     QVERIFY(GUIUtil::parseBitcoinURL(url, &rv));
55     QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
56     QVERIFY(rv.label == QString());
57
58     QVERIFY(GUIUtil::parseBitcoinURL("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     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address"));
64     QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv));
65
66     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example"));
67     QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv));
68
69     url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example"));
70     QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv));
71 }