1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "option_test.h"
17
18 #include <gtest/gtest.h>
19
20 #include <hilog/log.h>
21
22 #include "option.h"
23
24 using namespace testing::ext;
25 namespace OHOS {
26 namespace Developtools {
27 namespace HiPerf {
28 class OptionTest : public testing::Test {
29 public:
30 static void SetUpTestCase(void);
31 static void TearDownTestCase(void);
32 void SetUp();
33 void TearDown();
34 };
35
SetUpTestCase()36 void OptionTest::SetUpTestCase() {}
37
TearDownTestCase()38 void OptionTest::TearDownTestCase() {}
39
SetUp()40 void OptionTest::SetUp()
41 {
42 Option::RegisterMainOption(TEST_OPTION_CMD_1, TEST_OPTION_HELP, OptionAlwaysFalse);
43 Option::RegisterMainOption(TEST_OPTION_CMD_2, TEST_OPTION_HELP, OptionAlwaysFalse);
44 Option::RegisterMainOption(TEST_OPTION_CMD_3, TEST_OPTION_HELP, OptionAlwaysFalse);
45 }
46
TearDown()47 void OptionTest::TearDown()
48 {
49 Option::ClearMainOptions();
50 }
51
52 /**
53 * @tc.name: TestRegisterMainOption
54 * @tc.desc:
55 * @tc.type: FUNC
56 */
57 HWTEST_F(OptionTest, TestRegisterMainOption, TestSize.Level1)
58 {
59 EXPECT_EQ(
60 Option::RegisterMainOption(TEST_OPTION_CMD_NO_PREFIX, TEST_OPTION_HELP, OptionAlwaysFalse),
61 false);
62 EXPECT_EQ(
63 Option::RegisterMainOption(TEST_OPTION_CMD_ERR_PREFIX, TEST_OPTION_HELP, OptionAlwaysFalse),
64 false);
65 EXPECT_EQ(
66 Option::RegisterMainOption(TEST_OPTION_CMD_EMPTY, TEST_OPTION_HELP, OptionAlwaysFalse),
67 false);
68
69 EXPECT_EQ(Option::RegisterMainOption("-tf", TEST_OPTION_HELP, OptionAlwaysFalse), true);
70 EXPECT_EQ(Option::RegisterMainOption("-tf", TEST_OPTION_HELP, OptionAlwaysFalse), false);
71 EXPECT_EQ(Option::RegisterMainOption("-tt", TEST_OPTION_HELP, OptionAlwaysTrue), true);
72 EXPECT_EQ(Option::RegisterMainOption("-tt", TEST_OPTION_HELP, OptionAlwaysTrue), false);
73 }
74
75 /**
76 * @tc.name: TestFindMainOption
77 * @tc.desc:
78 * @tc.type: FUNC
79 */
80 HWTEST_F(OptionTest, TestFindMainOption, TestSize.Level1)
81 {
82 ASSERT_NE(Option::FindMainOption(TEST_OPTION_CMD_1), nullptr);
83 EXPECT_NE(Option::FindMainOption(TEST_OPTION_CMD_1)->help, TEST_OPTION_BRIEF);
84 EXPECT_EQ(Option::FindMainOption(TEST_OPTION_CMD_1)->help, TEST_OPTION_HELP);
85
86 ASSERT_NE(Option::FindMainOption(TEST_OPTION_CMD_2), nullptr);
87 EXPECT_NE(Option::FindMainOption(TEST_OPTION_CMD_2)->help, TEST_OPTION_BRIEF);
88 EXPECT_EQ(Option::FindMainOption(TEST_OPTION_CMD_2)->help, TEST_OPTION_HELP);
89
90 ASSERT_NE(Option::FindMainOption(TEST_OPTION_CMD_3), nullptr);
91 EXPECT_NE(Option::FindMainOption(TEST_OPTION_CMD_3)->help, TEST_OPTION_BRIEF);
92 EXPECT_EQ(Option::FindMainOption(TEST_OPTION_CMD_3)->help, TEST_OPTION_HELP);
93
94 EXPECT_EQ(Option::FindMainOption(TEST_NO_OPTION_CMD), nullptr);
95 }
96
97 /**
98 * @tc.name: TestGetMainOptions
99 * @tc.desc:
100 * @tc.type: FUNC
101 */
102 HWTEST_F(OptionTest, GetMainOptions, TestSize.Level1)
103 {
104 EXPECT_EQ(Option::GetMainOptions().size(), 3u);
105 Option::ClearMainOptions();
106 EXPECT_EQ(Option::GetMainOptions().size(), 0u);
107 }
108
109 /**
110 * @tc.name: TestGetOptionBool
111 * @tc.desc:
112 * @tc.type: FUNC
113 */
114 HWTEST_F(OptionTest, GetOptionBool, TestSize.Level0)
115 {
116 bool boolVal;
117 std::vector<std::string> args;
118
119 // one arg
120 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_NAME, boolVal), true);
121 EXPECT_EQ(args.size(), ONE_ARGS_WITH_VALUE.size() - 1u); // only one option should eat
122 EXPECT_EQ(boolVal, true);
123 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_ERROR_NAME, boolVal), true);
124 EXPECT_EQ(boolVal, true);
125 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_NAME, boolVal), true);
126 EXPECT_EQ(boolVal, true);
127 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_ILLEGAL_NAME, boolVal),
128 false);
129 EXPECT_EQ(boolVal, true);
130
131 // two arg
132 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_NAME, boolVal), true);
133 EXPECT_EQ(args.size(), TWO_ARGS_WITH_VALUE.size() - 1u);
134 EXPECT_EQ(boolVal, true);
135 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_ERROR_NAME, boolVal), true);
136 EXPECT_EQ(boolVal, true);
137 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_NAME, boolVal), true);
138 EXPECT_EQ(boolVal, true);
139 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_ILLEGAL_NAME, boolVal),
140 false);
141 EXPECT_EQ(boolVal, true);
142
143 // two error arg
144 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_NAME, boolVal), true);
145 EXPECT_EQ(boolVal, true);
146 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_ERROR_NAME, boolVal),
147 true);
148 EXPECT_EQ(boolVal, true);
149 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_NAME, boolVal), true);
150 EXPECT_EQ(boolVal, true);
151 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_ILLEGAL_NAME, boolVal),
152 false);
153 EXPECT_EQ(boolVal, true);
154
155 // mix arg
156 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_1_WITH_VALUE, OPTION_NAME, boolVal), true);
157 EXPECT_EQ(boolVal, true);
158 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_1_WITH_VALUE, OPTION_ERROR_NAME, boolVal),
159 true);
160 EXPECT_EQ(boolVal, true);
161 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_NAME, boolVal), true);
162 EXPECT_EQ(boolVal, true);
163 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_ERROR_NAME, boolVal),
164 true);
165 EXPECT_EQ(boolVal, true);
166 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_ILLEGAL_NAME, boolVal),
167 false);
168 EXPECT_EQ(boolVal, true);
169 }
170
171 /**
172 * @tc.name: TestGetOptionInt
173 * @tc.desc:
174 * @tc.type: FUNC
175 */
176 HWTEST_F(OptionTest, GetOptionInt, TestSize.Level1)
177 {
178 int intValue;
179 std::vector<std::string> args;
180
181 // one arg
182 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_NAME, intValue), true);
183 EXPECT_EQ(intValue, OPTION_INT_VALUE);
184
185 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_ERROR_NAME, intValue),
186 true);
187 EXPECT_EQ(intValue, OPTION_INT_VALUE);
188
189 // two arg
190 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_NAME, intValue), true);
191 EXPECT_EQ(intValue, OPTION_INT_VALUE);
192
193 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_ERROR_NAME, intValue),
194 true);
195 EXPECT_EQ(intValue, OPTION_INT_VALUE);
196
197 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_ILLEGAL_NAME, intValue),
198 false);
199 EXPECT_EQ(intValue, OPTION_INT_VALUE);
200
201 // two error arg
202 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_NAME, intValue), true);
203 EXPECT_EQ(intValue, OPTION_INT_VALUE);
204
205 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_ERROR_NAME, intValue),
206 true);
207 EXPECT_EQ(intValue, OPTION_INT_VALUE);
208
209
210 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_ILLEGAL_NAME, intValue),
211 false);
212 EXPECT_EQ(intValue, OPTION_INT_VALUE);
213 }
214 /**
215 * @tc.name: TestGetOptionInt
216 * @tc.desc:
217 * @tc.type: FUNC
218 */
219 HWTEST_F(OptionTest, GetOptionInt2, TestSize.Level2)
220 {
221 int intValue;
222 std::vector<std::string> args;
223
224 // mix arg
225 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_1_WITH_VALUE, OPTION_NAME, intValue), true);
226 EXPECT_EQ(intValue, OPTION_INT_VALUE);
227
228 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_1_WITH_VALUE, OPTION_ERROR_NAME, intValue),
229 true);
230 EXPECT_EQ(intValue, OPTION_INT_VALUE);
231
232 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_NAME, intValue), true);
233 EXPECT_EQ(intValue, OPTION_INT_VALUE);
234
235 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_ERROR_NAME, intValue),
236 true);
237 EXPECT_EQ(intValue, OPTION_INT_VALUE);
238
239 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_ILLEGAL_NAME, intValue),
240 false);
241 EXPECT_EQ(intValue, OPTION_INT_VALUE);
242
243 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_ILLEGAL_VALUE, OPTION_NAME, intValue),
244 false);
245 EXPECT_EQ(intValue, OPTION_INT_VALUE);
246 }
247
248 /**
249 * @tc.name: TestGetOptionString
250 * @tc.desc:
251 * @tc.type: FUNC
252 */
253 HWTEST_F(OptionTest, GetOptionString, TestSize.Level1)
254 {
255 std::string stringValue;
256 std::vector<std::string> args;
257
258 // one arg
259 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_NAME, stringValue), true);
260 EXPECT_EQ(stringValue, OPTION_STRING_VALUE);
261 stringValue.clear();
262
263 EXPECT_EQ(Option::GetOptionValue(args = ONE_ARGS_WITH_VALUE, OPTION_ERROR_NAME, stringValue),
264 true);
265 EXPECT_EQ(stringValue.empty(), true);
266 stringValue.clear();
267
268 // two arg
269 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_NAME, stringValue), true);
270 EXPECT_EQ(stringValue, OPTION_STRING_VALUE);
271 stringValue.clear();
272
273 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_ERROR_NAME, stringValue),
274 true);
275 EXPECT_EQ(stringValue.empty(), true);
276 stringValue.clear();
277
278 EXPECT_EQ(Option::GetOptionValue(args = TWO_ARGS_WITH_VALUE, OPTION_ILLEGAL_NAME, stringValue),
279 false);
280 EXPECT_EQ(stringValue.empty(), true);
281 stringValue.clear();
282
283 // two error arg
284 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_NAME, stringValue), true);
285 EXPECT_EQ(stringValue.empty(), true);
286 stringValue.clear();
287
288 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_ERROR_NAME, stringValue),
289 true);
290 EXPECT_EQ(stringValue, OPTION_STRING_VALUE);
291 stringValue.clear();
292
293 EXPECT_EQ(Option::GetOptionValue(args = TWO_ERROR_WITH_VALUE, OPTION_ILLEGAL_NAME, stringValue),
294 false);
295 EXPECT_EQ(stringValue.empty(), true);
296 stringValue.clear();
297 }
298
299 /**
300 * @tc.name: TestGetOptionString
301 * @tc.desc:
302 * @tc.type: FUNC
303 */
304 HWTEST_F(OptionTest, GetOptionString2, TestSize.Level2)
305 {
306 std::string stringValue;
307 std::vector<std::string> args;
308
309 // mix arg
310 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_1_WITH_VALUE, OPTION_NAME, stringValue), true);
311 EXPECT_EQ(stringValue, OPTION_STRING_VALUE);
312 stringValue.clear();
313
314 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_1_WITH_VALUE, OPTION_ERROR_NAME, stringValue),
315 true);
316 EXPECT_EQ(stringValue, OPTION_STRING_VALUE);
317 stringValue.clear();
318
319 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_NAME, stringValue), true);
320 EXPECT_EQ(stringValue, OPTION_STRING_VALUE);
321 stringValue.clear();
322
323 EXPECT_EQ(Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_ERROR_NAME, stringValue),
324 true);
325 EXPECT_EQ(stringValue, OPTION_STRING_VALUE);
326 stringValue.clear();
327
328 EXPECT_EQ(
329 Option::GetOptionValue(args = MIX_ARGS_2_WITH_VALUE, OPTION_ILLEGAL_NAME, stringValue),
330 false);
331 EXPECT_EQ(stringValue.empty(), true);
332 stringValue.clear();
333 }
334
335 /**
336 * @tc.name: TestGetOptionStrings
337 * @tc.desc:
338 * @tc.type: FUNC
339 */
340 HWTEST_F(OptionTest, GetOptionStrings, TestSize.Level1)
341 {
342 std::vector<std::string> stringValues;
343 const std::vector<std::string> constargs = {OPTION_NAME, OPTION_STRING_THREE_VALUES,
344 OPTION_ERROR_NAME};
345 std::vector<std::string> args;
346 EXPECT_EQ(Option::GetOptionValue(args = constargs, OPTION_NAME, stringValues), true);
347 EXPECT_EQ(stringValues.size(), 3u);
348
349 // if is error name , value should same as we passed
350 // in this case it should be 3 from last test case
351 args = constargs;
352 EXPECT_EQ(Option::GetOptionValue(args = constargs, OPTION_ERROR_NAME, stringValues), false);
353 EXPECT_EQ(stringValues.size(), 3u);
354 }
355
356 /**
357 * @tc.name: TestGetOptionStringss
358 * @tc.desc:
359 * @tc.type: FUNC
360 */
361 HWTEST_F(OptionTest, GetOptionStringss, TestSize.Level2)
362 {
363 std::vector<std::vector<std::string>> stringValuess;
364 const std::vector<std::string> constArgs = {
365 OPTION_NAME,
366 OPTION_STRING_THREE_VALUES,
367 OPTION_ERROR_NAME,
368 OPTION_NAME,
369 OPTION_STRING_THREE_VALUES,
370 OPTION_NAME,
371 OPTION_STRING_THREE_VALUES,
372 OPTION_NAME,
373 OPTION_STRING_THREE_VALUES,
374 OPTION_NAME_ONLY,
375 };
376 std::vector<std::string> args;
377
378 EXPECT_EQ(Option::GetOptionValue(args = constArgs, OPTION_NAME, stringValuess), true);
379 EXPECT_EQ(stringValuess.size(), 4u);
380
381 // OPTION_NAME will be use like value, so result size is 1
382 args = constArgs;
383 EXPECT_EQ(Option::GetOptionValue(args = constArgs, OPTION_ERROR_NAME, stringValuess), true);
384 EXPECT_EQ(stringValuess.size(), 1u);
385
386 args = constArgs;
387 EXPECT_EQ(Option::GetOptionValue(args = constArgs, OPTION_NAME_ONLY, stringValuess), false);
388 // last time it cahnge to 1
389 EXPECT_EQ(stringValuess.size(), 1u);
390
391 args = constArgs;
392 // void name
393 EXPECT_EQ(Option::GetOptionValue(args = constArgs, OPTION_NAME_VOID, stringValuess), true);
394 EXPECT_EQ(stringValuess.size(), 1u);
395 }
396
397 /**
398 * @tc.name: TestGetOptionInts
399 * @tc.desc:
400 * @tc.type: FUNC
401 */
402 HWTEST_F(OptionTest, GetOptionInts, TestSize.Level1)
403 {
404 std::vector<int> intValues;
405 const std::vector<std::string> constArgs = {OPTION_NAME, OPTION_STRING_THREE_VALUES,
406 OPTION_ERROR_NAME};
407 const std::vector<std::string> constIllegalArgs = {
408 OPTION_NAME, OPTION_STRING_THREE_ILLEGAL_VALUES, OPTION_ERROR_NAME};
409 std::vector<std::string> args;
410
411 EXPECT_EQ(Option::GetOptionValue(args = constArgs, OPTION_NAME, intValues), true);
412 EXPECT_EQ(intValues.size(), 3u);
413
414 // should still same , not incress
415 EXPECT_EQ(Option::GetOptionValue(args = constArgs, OPTION_NAME, intValues), true);
416 EXPECT_EQ(intValues.size(), 3u);
417
418 // should not change if false
419 EXPECT_EQ(Option::GetOptionValue(args = constArgs, OPTION_ERROR_NAME, intValues), false);
420 EXPECT_EQ(intValues.size(), 3u);
421
422 // should not change if false
423 EXPECT_EQ(Option::GetOptionValue(args = constIllegalArgs, OPTION_NAME, intValues), false);
424 EXPECT_EQ(intValues.size(), 3u);
425 }
426
427 /**
428 * @tc.name: TestGetValueFromStringBool
429 * @tc.desc:
430 * @tc.type: FUNC
431 */
432 HWTEST_F(OptionTest, TestGetValueFromStringBool, TestSize.Level2)
433 {
434 bool boolValue;
435 EXPECT_EQ(Option::GetValueFromString(OPTION_NAME, OPTION_NAME, boolValue), true);
436 EXPECT_EQ(boolValue, true);
437 }
438
439 /**
440 * @tc.name: TestGetValueFromStringInt01
441 * @tc.desc:
442 * @tc.type: FUNC
443 */
444 HWTEST_F(OptionTest, TestGetValueFromStringInt01, TestSize.Level0)
445 {
446 int intValue;
447 EXPECT_EQ(Option::GetValueFromString(OPTION_STRING_VALUE, OPTION_NAME, intValue), true);
448 EXPECT_EQ(intValue, 3);
449 }
450
451 /**
452 * @tc.name: TestGetValueFromStringInt02
453 * @tc.desc:
454 * @tc.type: FUNC
455 */
456 HWTEST_F(OptionTest, TestGetValueFromStringInt02, TestSize.Level1)
457 {
458 int intValue = 0;
459 EXPECT_EQ(Option::GetValueFromString("a111", OPTION_NAME, intValue), false); // "a111" can not trans to int
460 }
461
462 /**
463 * @tc.name: TestGetValueFromStringInt03
464 * @tc.desc:
465 * @tc.type: FUNC
466 */
467 HWTEST_F(OptionTest, TestGetValueFromStringInt03, TestSize.Level2)
468 {
469 int intValue;
470 EXPECT_EQ(Option::GetValueFromString("1a11", OPTION_NAME, intValue), false); // "1a11" can not trans to int
471 }
472
473 /**
474 * @tc.name: TestGetValueFromStringInt04
475 * @tc.desc:
476 * @tc.type: FUNC
477 */
478 HWTEST_F(OptionTest, TestGetValueFromStringInt04, TestSize.Level2)
479 {
480 int intValue;
481 EXPECT_EQ(Option::GetValueFromString("-1", OPTION_NAME, intValue), true); // "-1" can trans to int -1
482 EXPECT_EQ(intValue, -1);
483 }
484
485 /**
486 * @tc.name: TestGetValueFromStringInt05
487 * @tc.desc:
488 * @tc.type: FUNC
489 */
490 HWTEST_F(OptionTest, TestGetValueFromStringInt05, TestSize.Level2)
491 {
492 int intValue;
493 EXPECT_EQ(Option::GetValueFromString("2147483648", OPTION_NAME, intValue), false); // "2147483648": INT_MAX + 1
494 EXPECT_EQ(intValue, 0);
495 }
496
497 /**
498 * @tc.name: TestGetValueFromStringFloat01
499 * @tc.desc:
500 * @tc.type: FUNC
501 */
502 HWTEST_F(OptionTest, TestGetValueFromStringFloat01, TestSize.Level1)
503 {
504 float floatValue;
505 EXPECT_EQ(Option::GetValueFromString(OPTION_STRING_VALUE, OPTION_NAME, floatValue), true);
506 EXPECT_EQ(floatValue, 3.0);
507 }
508
509 /**
510 * @tc.name: TestGetValueFromStringFloat02
511 * @tc.desc:
512 * @tc.type: FUNC
513 */
514 HWTEST_F(OptionTest, TestGetValueFromStringFloat02, TestSize.Level2)
515 {
516 float floatValue;
517 EXPECT_EQ(Option::GetValueFromString("a13", OPTION_NAME, floatValue), false); // "a.13" can not trans to float
518 }
519
520 /**
521 * @tc.name: TestGetValueFromStringFloat03
522 * @tc.desc:
523 * @tc.type: FUNC
524 */
525 HWTEST_F(OptionTest, TestGetValueFromStringFloat03, TestSize.Level2)
526 {
527 float floatValue;
528 float result = 0.1; // 0.1: test value
529 EXPECT_EQ(Option::GetValueFromString(".1", OPTION_NAME, floatValue), true); // ".1" can trans to float 0.1
530 EXPECT_EQ(floatValue, result);
531 }
532
533 /**
534 * @tc.name: TestGetValueFromStringFloat04
535 * @tc.desc:
536 * @tc.type: FUNC
537 */
538 HWTEST_F(OptionTest, TestGetValueFromStringFloat04, TestSize.Level3)
539 {
540 float floatValue;
541 double doubleMax = DBL_MAX;
542 EXPECT_EQ(Option::GetValueFromString(std::to_string(doubleMax), OPTION_NAME, floatValue), false);
543 }
544
545 /**
546 * @tc.name: TestGetValueFromStringString
547 * @tc.desc:
548 * @tc.type: FUNC
549 */
550 HWTEST_F(OptionTest, TestGetValueFromStringString, TestSize.Level1)
551 {
552 std::string stringValue;
553 EXPECT_EQ(Option::GetValueFromString(OPTION_NAME, OPTION_NAME, stringValue), true);
554 EXPECT_EQ(stringValue, OPTION_NAME);
555 }
556
557 /**
558 * @tc.name: TestGetValueFromStringInts01
559 * @tc.desc:
560 * @tc.type: FUNC
561 */
562 HWTEST_F(OptionTest, TestGetValueFromStringInts01, TestSize.Level0)
563 {
564 std::vector<int> values;
565 EXPECT_EQ(Option::GetValueFromString(OPTION_STRING_THREE_VALUES, OPTION_NAME, values), true);
566 EXPECT_EQ(values.size(), 3u);
567 }
568
569 /**
570 * @tc.name: TestGetValueFromStringInts02
571 * @tc.desc:
572 * @tc.type: FUNC
573 */
574 HWTEST_F(OptionTest, TestGetValueFromStringInts02, TestSize.Level3)
575 {
576 std::vector<int> values;
577 EXPECT_EQ(Option::GetValueFromString(OPTION_STRING_THREE_ILLEGAL_VALUES, OPTION_NAME, values), false);
578 EXPECT_EQ(values.size(), 1u); // values: {1}
579 }
580
581 /**
582 * @tc.name: TestGetValueFromStringStrings
583 * @tc.desc:
584 * @tc.type: FUNC
585 */
586 HWTEST_F(OptionTest, TestGetValueFromStringStrings, TestSize.Level1)
587 {
588 std::vector<std::string> values;
589 EXPECT_EQ(Option::GetValueFromString(OPTION_STRING_THREE_VALUES, OPTION_NAME, values), true);
590 EXPECT_EQ(values.size(), 3u);
591 }
592
593 /**
594 * @tc.name: TestGetOptionTrackedCommand
595 * @tc.desc:
596 * @tc.type: FUNC
597 */
598 HWTEST_F(OptionTest, TestGetOptionTrackedCommand, TestSize.Level0)
599 {
600 std::vector<std::string> args;
601 args = {OPTION_NAME, OPTION_STRING_THREE_VALUES, OPTION_ERROR_NAME};
602 std::vector<std::string> trackedCommand;
603 EXPECT_EQ(Option::GetOptionTrackedCommand(args, trackedCommand), true);
604 EXPECT_EQ(trackedCommand.size(), 3u);
605 EXPECT_EQ(args.size(), 0u);
606 }
607
608 /**
609 * @tc.name: TestGetValueFromStringUINT64_T01
610 * @tc.desc:
611 * @tc.type: FUNC
612 */
613 HWTEST_F(OptionTest, TestGetValueFromStringUINT64_T01, TestSize.Level2)
614 {
615 static constexpr uint64_t EXPECT = 1234;
616 uint64_t value = 0;
617 EXPECT_EQ(Option::GetValueFromString("1234", OPTION_NAME, value), true);
618 EXPECT_EQ(value, EXPECT);
619 }
620
621 /**
622 * @tc.name: TestGetValueFromStringUINT64_T02
623 * @tc.desc:
624 * @tc.type: FUNC
625 */
626 HWTEST_F(OptionTest, TestGetValueFromStringUINT64_T02, TestSize.Level3)
627 {
628 uint64_t value;
629 EXPECT_EQ(Option::GetValueFromString("1a00", OPTION_NAME, value), false); // "1a00" can not trans to uint64_t
630 }
631
632 /**
633 * @tc.name: TestGetValueFromStringUINT64_T03
634 * @tc.desc:
635 * @tc.type: FUNC
636 */
637 HWTEST_F(OptionTest, TestGetValueFromStringUINT64_T03, TestSize.Level3)
638 {
639 uint64_t value = 0;
640 // 18446744073709551616: UINT64_T_MAX +1
641 EXPECT_EQ(Option::GetValueFromString("18446744073709551616", OPTION_NAME, value), false);
642 }
643 } // namespace HiPerf
644 } // namespace Developtools
645 } // namespace OHOS
646