xref: /aosp_15_r20/external/ltp/lib/newlib_tests/test_parse_filesize.c (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (C) 2021 SUSE LLC Andrea Cervesato <[email protected]>
4  */
5 
6 /*
7  * Tests for tst_parse_filesize.
8  */
9 
10 #include "tst_test.h"
11 
do_test(void)12 static void do_test(void)
13 {
14     long long val = 0;
15     int ret = 0;
16 
17     if ((ret = tst_parse_filesize("1", &val, LLONG_MIN, LLONG_MAX))) {
18         tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
19     } else {
20         if (val == 1LL)
21             tst_res(TPASS, "value is %lli", val);
22         else
23             tst_res(TFAIL, "%lli != %lli", val, 1LL);
24     }
25 
26     /* small letters */
27     if ((ret = tst_parse_filesize("1k", &val, LLONG_MIN, LLONG_MAX))) {
28         tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
29     } else {
30         if (val == 1024LL)
31             tst_res(TPASS, "value is %lli", val);
32         else
33             tst_res(TFAIL, "%lli != %lli", val, 1024LL);
34     }
35 
36     if ((ret = tst_parse_filesize("1m", &val, LLONG_MIN, LLONG_MAX))) {
37         tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
38     } else {
39         if (val == 1048576LL)
40             tst_res(TPASS, "value is %lli", val);
41         else
42             tst_res(TFAIL, "%lli != %lli", val, 1048576LL);
43     }
44 
45     if ((ret = tst_parse_filesize("1g", &val, LLONG_MIN, LLONG_MAX))) {
46         tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
47     } else {
48         if (val == 1073741824LL)
49             tst_res(TPASS, "value is %lli", val);
50         else
51             tst_res(TFAIL, "%lli != %lli", val, 1073741824LL);
52     }
53 
54     /* big letters */
55     if ((ret = tst_parse_filesize("1K", &val, LLONG_MIN, LLONG_MAX))) {
56         tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
57     } else {
58         if (val == 1024LL)
59             tst_res(TPASS, "value is %lli", val);
60         else
61             tst_res(TFAIL, "%lli != %lli", val, 1024LL);
62     }
63 
64     if ((ret = tst_parse_filesize("1M", &val, LLONG_MIN, LLONG_MAX))) {
65         tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
66     } else {
67         if (val == 1048576LL)
68             tst_res(TPASS, "value is %lli", val);
69         else
70             tst_res(TFAIL, "%lli != %lli", val, 1048576LL);
71     }
72 
73     if ((ret = tst_parse_filesize("1G", &val, LLONG_MIN, LLONG_MAX))) {
74         tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
75     } else {
76         if (val == 1073741824LL)
77             tst_res(TPASS, "value is %lli", val);
78         else
79             tst_res(TFAIL, "%lli != %lli", val, 1073741824LL);
80     }
81 
82     /* test errors */
83     if ((ret = tst_parse_filesize("k", &val, LLONG_MIN, LLONG_MAX))) {
84         if (ret == EINVAL)
85             tst_res(TPASS, "return code %d (%s)", ret, tst_strerrno(ret));
86         else
87             tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
88     } else {
89         tst_res(TFAIL, "tst_parse_filesize should have failed");
90     }
91 
92     if ((ret = tst_parse_filesize("100", &val, LLONG_MIN, 10))) {
93         if (ret == ERANGE)
94             tst_res(TPASS, "return code %d (%s)", ret, tst_strerrno(ret));
95         else
96             tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
97     } else {
98         tst_res(TFAIL, "tst_parse_filesize should have failed");
99     }
100 
101     if ((ret = tst_parse_filesize("10", &val, 100, LLONG_MAX))) {
102         if (ret == ERANGE)
103             tst_res(TPASS, "return code %d (%s)", ret, tst_strerrno(ret));
104         else
105             tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
106     } else {
107         tst_res(TFAIL, "tst_parse_filesize should have failed");
108     }
109 
110     if ((ret = tst_parse_filesize("10garbage", &val, LLONG_MIN, LLONG_MAX))) {
111         if (ret == EINVAL)
112             tst_res(TPASS, "return code %d (%s)", ret, tst_strerrno(ret));
113         else
114             tst_res(TFAIL, "return code %d (%s)", ret, tst_strerrno(ret));
115     } else {
116         tst_res(TFAIL, "tst_parse_filesize should have failed");
117     }
118 }
119 
120 static struct tst_test test = {
121 	.test_all = do_test,
122 };
123