1*cfb92d14SAndroid Build Coastguard Worker /*
2*cfb92d14SAndroid Build Coastguard Worker * Copyright (c) 2023, The OpenThread Authors.
3*cfb92d14SAndroid Build Coastguard Worker * All rights reserved.
4*cfb92d14SAndroid Build Coastguard Worker *
5*cfb92d14SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without
6*cfb92d14SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions are met:
7*cfb92d14SAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright
8*cfb92d14SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer.
9*cfb92d14SAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright
10*cfb92d14SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the
11*cfb92d14SAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution.
12*cfb92d14SAndroid Build Coastguard Worker * 3. Neither the name of the copyright holder nor the
13*cfb92d14SAndroid Build Coastguard Worker * names of its contributors may be used to endorse or promote products
14*cfb92d14SAndroid Build Coastguard Worker * derived from this software without specific prior written permission.
15*cfb92d14SAndroid Build Coastguard Worker *
16*cfb92d14SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17*cfb92d14SAndroid Build Coastguard Worker * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*cfb92d14SAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*cfb92d14SAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20*cfb92d14SAndroid Build Coastguard Worker * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*cfb92d14SAndroid Build Coastguard Worker * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*cfb92d14SAndroid Build Coastguard Worker * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*cfb92d14SAndroid Build Coastguard Worker * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*cfb92d14SAndroid Build Coastguard Worker * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*cfb92d14SAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26*cfb92d14SAndroid Build Coastguard Worker * POSSIBILITY OF SUCH DAMAGE.
27*cfb92d14SAndroid Build Coastguard Worker */
28*cfb92d14SAndroid Build Coastguard Worker
29*cfb92d14SAndroid Build Coastguard Worker #include <string.h>
30*cfb92d14SAndroid Build Coastguard Worker
31*cfb92d14SAndroid Build Coastguard Worker #include "test_util.h"
32*cfb92d14SAndroid Build Coastguard Worker #include "lib/url/url.hpp"
33*cfb92d14SAndroid Build Coastguard Worker
34*cfb92d14SAndroid Build Coastguard Worker namespace ot {
35*cfb92d14SAndroid Build Coastguard Worker namespace Url {
36*cfb92d14SAndroid Build Coastguard Worker
TestSimple(void)37*cfb92d14SAndroid Build Coastguard Worker void TestSimple(void)
38*cfb92d14SAndroid Build Coastguard Worker {
39*cfb92d14SAndroid Build Coastguard Worker char url[] = "spinel:///dev/ttyUSB0?baudrate=115200";
40*cfb92d14SAndroid Build Coastguard Worker Url args;
41*cfb92d14SAndroid Build Coastguard Worker
42*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(url));
43*cfb92d14SAndroid Build Coastguard Worker
44*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
45*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetValue("baudrate"), "115200"));
46*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("not-exists") == nullptr);
47*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("last-value-wrong-position", url) == nullptr);
48*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("last-value-before-url", url - 1) == nullptr);
49*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("last-value-after-url", url + sizeof(url)) == nullptr);
50*cfb92d14SAndroid Build Coastguard Worker
51*cfb92d14SAndroid Build Coastguard Worker printf("PASS %s\r\n", __func__);
52*cfb92d14SAndroid Build Coastguard Worker }
53*cfb92d14SAndroid Build Coastguard Worker
TestSimpleNoQueryString(void)54*cfb92d14SAndroid Build Coastguard Worker void TestSimpleNoQueryString(void)
55*cfb92d14SAndroid Build Coastguard Worker {
56*cfb92d14SAndroid Build Coastguard Worker char url[] = "spinel:///dev/ttyUSB0";
57*cfb92d14SAndroid Build Coastguard Worker Url args;
58*cfb92d14SAndroid Build Coastguard Worker
59*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(url));
60*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
61*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("last-value-wrong-position", url) == nullptr);
62*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("last-value-before-url", url - 1) == nullptr);
63*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("last-value-after-url", url + sizeof(url)) == nullptr);
64*cfb92d14SAndroid Build Coastguard Worker
65*cfb92d14SAndroid Build Coastguard Worker printf("PASS %s\r\n", __func__);
66*cfb92d14SAndroid Build Coastguard Worker }
67*cfb92d14SAndroid Build Coastguard Worker
TestEmptyValue(void)68*cfb92d14SAndroid Build Coastguard Worker void TestEmptyValue(void)
69*cfb92d14SAndroid Build Coastguard Worker {
70*cfb92d14SAndroid Build Coastguard Worker char url[] = "spinel:///dev/ttyUSB0?rtscts&baudrate=115200&verbose&verbose&verbose";
71*cfb92d14SAndroid Build Coastguard Worker Url args;
72*cfb92d14SAndroid Build Coastguard Worker const char *arg = nullptr;
73*cfb92d14SAndroid Build Coastguard Worker
74*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(url));
75*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
76*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit((arg = args.GetValue("rtscts")) != nullptr);
77*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("rtscts", arg) == nullptr);
78*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit((arg = args.GetValue("verbose", arg)) != nullptr);
79*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit((arg = args.GetValue("verbose", arg)) != nullptr);
80*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit((arg = args.GetValue("verbose", arg)) != nullptr);
81*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit((arg = args.GetValue("verbose", arg)) == nullptr);
82*cfb92d14SAndroid Build Coastguard Worker
83*cfb92d14SAndroid Build Coastguard Worker printf("PASS %s\r\n", __func__);
84*cfb92d14SAndroid Build Coastguard Worker }
85*cfb92d14SAndroid Build Coastguard Worker
TestMultipleProtocols(void)86*cfb92d14SAndroid Build Coastguard Worker void TestMultipleProtocols(void)
87*cfb92d14SAndroid Build Coastguard Worker {
88*cfb92d14SAndroid Build Coastguard Worker char url[] = "spinel+spi:///dev/ttyUSB0?baudrate=115200";
89*cfb92d14SAndroid Build Coastguard Worker Url args;
90*cfb92d14SAndroid Build Coastguard Worker
91*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(url));
92*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
93*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetValue("baudrate"), "115200"));
94*cfb92d14SAndroid Build Coastguard Worker
95*cfb92d14SAndroid Build Coastguard Worker printf("PASS %s\r\n", __func__);
96*cfb92d14SAndroid Build Coastguard Worker }
97*cfb92d14SAndroid Build Coastguard Worker
TestMultipleProtocolsAndDuplicateParameters(void)98*cfb92d14SAndroid Build Coastguard Worker void TestMultipleProtocolsAndDuplicateParameters(void)
99*cfb92d14SAndroid Build Coastguard Worker {
100*cfb92d14SAndroid Build Coastguard Worker char url[] = "spinel+exec:///path/to/ot-rcp?arg=1&arg=arg2&arg=3";
101*cfb92d14SAndroid Build Coastguard Worker Url args;
102*cfb92d14SAndroid Build Coastguard Worker const char *arg = nullptr;
103*cfb92d14SAndroid Build Coastguard Worker
104*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(url));
105*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/path/to/ot-rcp"));
106*cfb92d14SAndroid Build Coastguard Worker
107*cfb92d14SAndroid Build Coastguard Worker arg = args.GetValue("arg");
108*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(arg, "1"));
109*cfb92d14SAndroid Build Coastguard Worker
110*cfb92d14SAndroid Build Coastguard Worker arg = args.GetValue("arg", arg);
111*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(arg, "arg2"));
112*cfb92d14SAndroid Build Coastguard Worker
113*cfb92d14SAndroid Build Coastguard Worker arg = args.GetValue("arg", arg);
114*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(arg, "3"));
115*cfb92d14SAndroid Build Coastguard Worker
116*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("arg", url) == nullptr);
117*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("arg", url - 1) == nullptr);
118*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.GetValue("arg", url + sizeof(url)) == nullptr);
119*cfb92d14SAndroid Build Coastguard Worker
120*cfb92d14SAndroid Build Coastguard Worker printf("PASS %s\r\n", __func__);
121*cfb92d14SAndroid Build Coastguard Worker }
122*cfb92d14SAndroid Build Coastguard Worker
TestIntValue(void)123*cfb92d14SAndroid Build Coastguard Worker void TestIntValue(void)
124*cfb92d14SAndroid Build Coastguard Worker {
125*cfb92d14SAndroid Build Coastguard Worker char int8url[] = "spinel:///dev/ttyUSB0?no-reset&val1=1&val2=0x02&val3=-0X03&val4=-4&val5=+5&val6=128&val7=-129";
126*cfb92d14SAndroid Build Coastguard Worker char int16url[] = "spinel:///dev/ttyUSB0?val1=1&val2=0x02&val3=-0X03&val4=-400&val5=+500&val6=32768&val7=-32769";
127*cfb92d14SAndroid Build Coastguard Worker char int32url[] =
128*cfb92d14SAndroid Build Coastguard Worker "spinel:///dev/ttyUSB0?val1=1&val2=0x02&val3=-0X03&val4=-40000&val5=+50000&val6=2147483648&val7=-2147483649";
129*cfb92d14SAndroid Build Coastguard Worker Url args;
130*cfb92d14SAndroid Build Coastguard Worker int8_t int8val;
131*cfb92d14SAndroid Build Coastguard Worker int16_t int16val;
132*cfb92d14SAndroid Build Coastguard Worker int32_t int32val;
133*cfb92d14SAndroid Build Coastguard Worker
134*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(int8url));
135*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
136*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.HasParam("no-reset"));
137*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.HasParam("reset"));
138*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt8("val1", int8val));
139*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == 1);
140*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt8("val2", int8val));
141*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == 2);
142*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt8("val3", int8val));
143*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == -3);
144*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt8("val4", int8val));
145*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == -4);
146*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt8("val5", int8val));
147*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == 5);
148*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt8("val6", int8val) == OT_ERROR_INVALID_ARGS);
149*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == 5);
150*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt8("val7", int8val) == OT_ERROR_INVALID_ARGS);
151*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == 5);
152*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt8("val8", int8val) == OT_ERROR_NOT_FOUND);
153*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int8val == 5);
154*cfb92d14SAndroid Build Coastguard Worker
155*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(int16url));
156*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
157*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt16("val1", int16val));
158*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == 1);
159*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt16("val2", int16val));
160*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == 2);
161*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt16("val3", int16val));
162*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == -3);
163*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt16("val4", int16val));
164*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == -400);
165*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt16("val5", int16val));
166*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == 500);
167*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt16("val6", int16val) == OT_ERROR_INVALID_ARGS);
168*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == 500);
169*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt16("val7", int16val) == OT_ERROR_INVALID_ARGS);
170*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == 500);
171*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt16("val8", int16val) == OT_ERROR_NOT_FOUND);
172*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int16val == 500);
173*cfb92d14SAndroid Build Coastguard Worker
174*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(int32url));
175*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
176*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt32("val1", int32val));
177*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == 1);
178*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt32("val2", int32val));
179*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == 2);
180*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt32("val3", int32val));
181*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == -3);
182*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt32("val4", int32val));
183*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == -40000);
184*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseInt32("val5", int32val));
185*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == 50000);
186*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt32("val6", int32val) == OT_ERROR_INVALID_ARGS);
187*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == 50000);
188*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt32("val7", int32val) == OT_ERROR_INVALID_ARGS);
189*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == 50000);
190*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseInt32("val8", int32val) == OT_ERROR_NOT_FOUND);
191*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(int32val == 50000);
192*cfb92d14SAndroid Build Coastguard Worker
193*cfb92d14SAndroid Build Coastguard Worker printf("PASS %s\r\n", __func__);
194*cfb92d14SAndroid Build Coastguard Worker }
195*cfb92d14SAndroid Build Coastguard Worker
TestUintValue(void)196*cfb92d14SAndroid Build Coastguard Worker void TestUintValue(void)
197*cfb92d14SAndroid Build Coastguard Worker {
198*cfb92d14SAndroid Build Coastguard Worker char uint8url[] = "spinel:///dev/ttyUSB0?no-reset&val1=1&val2=0x02&val3=0X03&val4=-4&val5=+5&val6=256&val7=-1";
199*cfb92d14SAndroid Build Coastguard Worker char uint16url[] = "spinel:///dev/ttyUSB0?val1=1&val2=0x02&val3=0X03&val4=-400&val5=+500&val6=65536&val7=-1";
200*cfb92d14SAndroid Build Coastguard Worker char uint32url[] =
201*cfb92d14SAndroid Build Coastguard Worker "spinel:///dev/ttyUSB0?val1=1&val2=0x02&val3=0X03&val4=-40000&val5=+70000&val6=4294967296&val7=-1";
202*cfb92d14SAndroid Build Coastguard Worker Url args;
203*cfb92d14SAndroid Build Coastguard Worker uint8_t uint8val;
204*cfb92d14SAndroid Build Coastguard Worker uint16_t uint16val;
205*cfb92d14SAndroid Build Coastguard Worker uint32_t uint32val;
206*cfb92d14SAndroid Build Coastguard Worker
207*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(uint8url));
208*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
209*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint8("val1", uint8val));
210*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 1);
211*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint8("val2", uint8val));
212*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 2);
213*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint8("val3", uint8val));
214*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 3);
215*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint8("val4", uint8val) == OT_ERROR_INVALID_ARGS);
216*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 3);
217*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint8("val5", uint8val));
218*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 5);
219*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint8("val6", uint8val) == OT_ERROR_INVALID_ARGS);
220*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 5);
221*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint8("val7", uint8val) == OT_ERROR_INVALID_ARGS);
222*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 5);
223*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint8("val8", uint8val) == OT_ERROR_NOT_FOUND);
224*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint8val == 5);
225*cfb92d14SAndroid Build Coastguard Worker
226*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(uint16url));
227*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
228*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint16("val1", uint16val));
229*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 1);
230*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint16("val2", uint16val));
231*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 2);
232*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint16("val3", uint16val));
233*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 3);
234*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint16("val4", uint16val) == OT_ERROR_INVALID_ARGS);
235*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 3);
236*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint16("val5", uint16val));
237*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 500);
238*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint16("val6", uint16val) == OT_ERROR_INVALID_ARGS);
239*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 500);
240*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint16("val7", uint16val) == OT_ERROR_INVALID_ARGS);
241*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 500);
242*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint16("val8", uint16val) == OT_ERROR_NOT_FOUND);
243*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint16val == 500);
244*cfb92d14SAndroid Build Coastguard Worker
245*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!args.Init(uint32url));
246*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!strcmp(args.GetPath(), "/dev/ttyUSB0"));
247*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint32("val1", uint32val));
248*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 1);
249*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint32("val2", uint32val));
250*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 2);
251*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint32("val3", uint32val));
252*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 3);
253*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint32("val4", uint32val) == OT_ERROR_INVALID_ARGS);
254*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 3);
255*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(args.ParseUint32("val5", uint32val));
256*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 70000);
257*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint32("val6", uint32val) == OT_ERROR_INVALID_ARGS);
258*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 70000);
259*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint32("val7", uint32val) == OT_ERROR_INVALID_ARGS);
260*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 70000);
261*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(args.ParseUint32("val8", uint32val) == OT_ERROR_NOT_FOUND);
262*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(uint32val == 70000);
263*cfb92d14SAndroid Build Coastguard Worker
264*cfb92d14SAndroid Build Coastguard Worker printf("PASS %s\r\n", __func__);
265*cfb92d14SAndroid Build Coastguard Worker }
266*cfb92d14SAndroid Build Coastguard Worker
267*cfb92d14SAndroid Build Coastguard Worker } // namespace Url
268*cfb92d14SAndroid Build Coastguard Worker } // namespace ot
269*cfb92d14SAndroid Build Coastguard Worker
main(void)270*cfb92d14SAndroid Build Coastguard Worker int main(void)
271*cfb92d14SAndroid Build Coastguard Worker {
272*cfb92d14SAndroid Build Coastguard Worker ot::Url::TestSimple();
273*cfb92d14SAndroid Build Coastguard Worker ot::Url::TestSimpleNoQueryString();
274*cfb92d14SAndroid Build Coastguard Worker ot::Url::TestEmptyValue();
275*cfb92d14SAndroid Build Coastguard Worker ot::Url::TestMultipleProtocols();
276*cfb92d14SAndroid Build Coastguard Worker ot::Url::TestMultipleProtocolsAndDuplicateParameters();
277*cfb92d14SAndroid Build Coastguard Worker ot::Url::TestIntValue();
278*cfb92d14SAndroid Build Coastguard Worker ot::Url::TestUintValue();
279*cfb92d14SAndroid Build Coastguard Worker
280*cfb92d14SAndroid Build Coastguard Worker return 0;
281*cfb92d14SAndroid Build Coastguard Worker }
282