xref: /aosp_15_r20/external/ltp/lib/tst_assert.c (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later
2*49cdfc7eSAndroid Build Coastguard Worker /*
3*49cdfc7eSAndroid Build Coastguard Worker  * Copyright (c) 2020 FUJITSU LIMITED. All rights reserved.
4*49cdfc7eSAndroid Build Coastguard Worker  * Author: Yang Xu <[email protected]>
5*49cdfc7eSAndroid Build Coastguard Worker  * Copyright (c) 2020 Cyril Hrubis <[email protected]>
6*49cdfc7eSAndroid Build Coastguard Worker  */
7*49cdfc7eSAndroid Build Coastguard Worker #include <stdio.h>
8*49cdfc7eSAndroid Build Coastguard Worker #define TST_NO_DEFAULT_MAIN
9*49cdfc7eSAndroid Build Coastguard Worker #include "tst_assert.h"
10*49cdfc7eSAndroid Build Coastguard Worker #include "tst_test.h"
11*49cdfc7eSAndroid Build Coastguard Worker 
tst_assert_int(const char * file,const int lineno,const char * path,int val)12*49cdfc7eSAndroid Build Coastguard Worker void tst_assert_int(const char *file, const int lineno, const char *path, int val)
13*49cdfc7eSAndroid Build Coastguard Worker {
14*49cdfc7eSAndroid Build Coastguard Worker 	int sys_val;
15*49cdfc7eSAndroid Build Coastguard Worker 
16*49cdfc7eSAndroid Build Coastguard Worker 	safe_file_scanf(file, lineno, NULL, path, "%d", &sys_val);
17*49cdfc7eSAndroid Build Coastguard Worker 
18*49cdfc7eSAndroid Build Coastguard Worker 	if (val == sys_val) {
19*49cdfc7eSAndroid Build Coastguard Worker 		tst_res_(file, lineno, TPASS, "%s = %d", path, val);
20*49cdfc7eSAndroid Build Coastguard Worker 		return;
21*49cdfc7eSAndroid Build Coastguard Worker 	}
22*49cdfc7eSAndroid Build Coastguard Worker 
23*49cdfc7eSAndroid Build Coastguard Worker 	tst_res_(file, lineno, TFAIL, "%s != %d got %d", path, val, sys_val);
24*49cdfc7eSAndroid Build Coastguard Worker }
25*49cdfc7eSAndroid Build Coastguard Worker 
tst_assert_ulong(const char * file,const int lineno,const char * path,unsigned long val)26*49cdfc7eSAndroid Build Coastguard Worker void tst_assert_ulong(const char *file, const int lineno, const char *path, unsigned long val)
27*49cdfc7eSAndroid Build Coastguard Worker {
28*49cdfc7eSAndroid Build Coastguard Worker 	unsigned long sys_val;
29*49cdfc7eSAndroid Build Coastguard Worker 
30*49cdfc7eSAndroid Build Coastguard Worker 	safe_file_scanf(file, lineno, NULL, path, "%lu", &sys_val);
31*49cdfc7eSAndroid Build Coastguard Worker 
32*49cdfc7eSAndroid Build Coastguard Worker 	if (val == sys_val) {
33*49cdfc7eSAndroid Build Coastguard Worker 		tst_res_(file, lineno, TPASS, "%s = %lu", path, val);
34*49cdfc7eSAndroid Build Coastguard Worker 		return;
35*49cdfc7eSAndroid Build Coastguard Worker 	}
36*49cdfc7eSAndroid Build Coastguard Worker 
37*49cdfc7eSAndroid Build Coastguard Worker 	tst_res_(file, lineno, TFAIL, "%s != %lu got %lu", path, val, sys_val);
38*49cdfc7eSAndroid Build Coastguard Worker }
39*49cdfc7eSAndroid Build Coastguard Worker 
tst_assert_file_int(const char * file,const int lineno,const char * path,const char * prefix,int val)40*49cdfc7eSAndroid Build Coastguard Worker void tst_assert_file_int(const char *file, const int lineno, const char *path, const char *prefix, int val)
41*49cdfc7eSAndroid Build Coastguard Worker {
42*49cdfc7eSAndroid Build Coastguard Worker 	int sys_val;
43*49cdfc7eSAndroid Build Coastguard Worker 	char fmt[1024];
44*49cdfc7eSAndroid Build Coastguard Worker 
45*49cdfc7eSAndroid Build Coastguard Worker 	snprintf(fmt, sizeof(fmt), "%s%%d", prefix);
46*49cdfc7eSAndroid Build Coastguard Worker 	file_lines_scanf(file, lineno, NULL, 1, path, fmt, &sys_val);
47*49cdfc7eSAndroid Build Coastguard Worker 
48*49cdfc7eSAndroid Build Coastguard Worker 	if (val == sys_val) {
49*49cdfc7eSAndroid Build Coastguard Worker 		tst_res_(file, lineno, TPASS, "%s %s = %d", path, prefix, sys_val);
50*49cdfc7eSAndroid Build Coastguard Worker 		return;
51*49cdfc7eSAndroid Build Coastguard Worker 	}
52*49cdfc7eSAndroid Build Coastguard Worker 
53*49cdfc7eSAndroid Build Coastguard Worker 	tst_res_(file, lineno, TFAIL, "%s %s != %d got %d", path, prefix, val, sys_val);
54*49cdfc7eSAndroid Build Coastguard Worker }
55*49cdfc7eSAndroid Build Coastguard Worker 
tst_assert_str(const char * file,const int lineno,const char * path,const char * val)56*49cdfc7eSAndroid Build Coastguard Worker void tst_assert_str(const char *file, const int lineno, const char *path, const char *val)
57*49cdfc7eSAndroid Build Coastguard Worker {
58*49cdfc7eSAndroid Build Coastguard Worker 	char sys_val[1024];
59*49cdfc7eSAndroid Build Coastguard Worker 
60*49cdfc7eSAndroid Build Coastguard Worker 	safe_file_scanf(file, lineno, NULL, path, "%1023s", sys_val);
61*49cdfc7eSAndroid Build Coastguard Worker 	if (!strcmp(val, sys_val)) {
62*49cdfc7eSAndroid Build Coastguard Worker 		tst_res_(file, lineno, TPASS, "%s = '%s'", path, val);
63*49cdfc7eSAndroid Build Coastguard Worker 		return;
64*49cdfc7eSAndroid Build Coastguard Worker 	}
65*49cdfc7eSAndroid Build Coastguard Worker 
66*49cdfc7eSAndroid Build Coastguard Worker 	tst_res_(file, lineno, TFAIL, "%s != '%s' got '%s'", path, val, sys_val);
67*49cdfc7eSAndroid Build Coastguard Worker }
68*49cdfc7eSAndroid Build Coastguard Worker 
tst_assert_file_str(const char * file,const int lineno,const char * path,const char * prefix,const char * val)69*49cdfc7eSAndroid Build Coastguard Worker void tst_assert_file_str(const char *file, const int lineno, const char *path, const char *prefix, const char *val)
70*49cdfc7eSAndroid Build Coastguard Worker {
71*49cdfc7eSAndroid Build Coastguard Worker 	char sys_val[1024];
72*49cdfc7eSAndroid Build Coastguard Worker 	char fmt[2048];
73*49cdfc7eSAndroid Build Coastguard Worker 
74*49cdfc7eSAndroid Build Coastguard Worker 	snprintf(fmt, sizeof(fmt), "%s: %%1023s", prefix);
75*49cdfc7eSAndroid Build Coastguard Worker 	file_lines_scanf(file, lineno, NULL, 1, path, fmt, sys_val);
76*49cdfc7eSAndroid Build Coastguard Worker 
77*49cdfc7eSAndroid Build Coastguard Worker 	if (!strcmp(val, sys_val)) {
78*49cdfc7eSAndroid Build Coastguard Worker 		tst_res_(file, lineno, TPASS, "%s %s = '%s'", path, prefix, sys_val);
79*49cdfc7eSAndroid Build Coastguard Worker 		return;
80*49cdfc7eSAndroid Build Coastguard Worker 	}
81*49cdfc7eSAndroid Build Coastguard Worker 
82*49cdfc7eSAndroid Build Coastguard Worker 	tst_res_(file, lineno, TFAIL, "%s %s != '%s' got '%s'", path, prefix, val, sys_val);
83*49cdfc7eSAndroid Build Coastguard Worker }
84