Blame view

test/print_ut.c 3.42 KB
e5a9d27fd   Simon Glass   test: Add a test ...
1
2
3
4
5
6
7
8
9
  /*
   * Copyright (c) 2012, The Chromium Authors
   *
   * SPDX-License-Identifier:	GPL-2.0+
   */
  
  #define DEBUG
  
  #include <common.h>
256060e42   Heinrich Schuchardt   vsprintf.c: add E...
10
11
12
13
  #if defined(CONFIG_EFI_LOADER) && \
  	!defined(CONFIG_SPL_BUILD) && !defined(API_BUILD)
  #include <efi_api.h>
  #endif
e5a9d27fd   Simon Glass   test: Add a test ...
14
15
16
17
18
  #include <display_options.h>
  #include <version.h>
  
  #define FAKE_BUILD_TAG	"jenkins-u-boot-denx_uboot_dm-master-build-aarch64" \
  			"and a lot more text to come"
256060e42   Heinrich Schuchardt   vsprintf.c: add E...
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  /* Test efi_loader specific printing */
  static void efi_ut_print(void)
  {
  #if defined(CONFIG_EFI_LOADER) && \
      !defined(CONFIG_SPL_BUILD) && !defined(API_BUILD)
  	char str[10];
  	u8 buf[sizeof(struct efi_device_path_sd_mmc_path) +
  	       sizeof(struct efi_device_path)];
  	u8 *pos = buf;
  	struct efi_device_path *dp_end;
  	struct efi_device_path_sd_mmc_path *dp_sd =
  			(struct efi_device_path_sd_mmc_path *)pos;
  
  	/* Create a device path for an SD card */
  	dp_sd->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE;
  	dp_sd->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_SD;
  	dp_sd->dp.length = sizeof(struct efi_device_path_sd_mmc_path);
  	dp_sd->slot_number = 3;
  	pos += sizeof(struct efi_device_path_sd_mmc_path);
  	/* Append end node */
  	dp_end = (struct efi_device_path *)pos;
  	dp_end->type = DEVICE_PATH_TYPE_END;
  	dp_end->sub_type = DEVICE_PATH_SUB_TYPE_END;
  	dp_end->length = sizeof(struct efi_device_path);
  
  	snprintf(str, sizeof(str), "_%pD_", buf);
  	assert(!strcmp("_/SD(3)_", str));
5f1ce1d4c   Heinrich Schuchardt   vsprintf.c: corre...
46
47
48
49
  
  	/* NULL device path */
  	snprintf(str, sizeof(str), "_%pD_", NULL);
  	assert(!strcmp("_<NULL>_", str));
256060e42   Heinrich Schuchardt   vsprintf.c: add E...
50
51
  #endif
  }
e5a9d27fd   Simon Glass   test: Add a test ...
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  static int do_ut_print(cmd_tbl_t *cmdtp, int flag, int argc,
  		       char *const argv[])
  {
  	char big_str[400];
  	int big_str_len;
  	char str[10], *s;
  	int len;
  
  	printf("%s: Testing print
  ", __func__);
  
  	snprintf(str, sizeof(str), "testing");
  	assert(!strcmp("testing", str));
  
  	snprintf(str, sizeof(str), "testing but too long");
  	assert(!strcmp("testing b", str));
  
  	snprintf(str, 1, "testing none");
  	assert(!strcmp("", str));
  
  	*str = 'x';
  	snprintf(str, 0, "testing none");
  	assert(*str == 'x');
085391b22   Rob Clark   test: print_ut: A...
75
76
  	sprintf(big_str, "_%ls_", L"foo");
  	assert(!strcmp("_foo_", big_str));
e5a9d27fd   Simon Glass   test: Add a test ...
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  	/* Test the banner function */
  	s = display_options_get_banner(true, str, sizeof(str));
  	assert(s == str);
  	assert(!strcmp("
  
  U-Boo
  
  ", s));
  
  	s = display_options_get_banner(true, str, 1);
  	assert(s == str);
  	assert(!strcmp("", s));
  
  	s = display_options_get_banner(true, str, 2);
  	assert(s == str);
  	assert(!strcmp("
  ", s));
  
  	s = display_options_get_banner(false, str, sizeof(str));
  	assert(s == str);
  	assert(!strcmp("U-Boot 
  
  ", s));
  
  	/* Give it enough space for some of the version */
  	big_str_len = strlen(version_string) - 5;
  	s = display_options_get_banner_priv(false, FAKE_BUILD_TAG, big_str,
  					    big_str_len);
  	assert(s == big_str);
  	assert(!strncmp(version_string, s, big_str_len - 3));
  	assert(!strcmp("
  
  ", s + big_str_len - 3));
  
  	/* Give it enough space for the version and some of the build tag */
  	big_str_len = strlen(version_string) + 9 + 20;
  	s = display_options_get_banner_priv(false, FAKE_BUILD_TAG, big_str,
  					    big_str_len);
  	assert(s == big_str);
  	len = strlen(version_string);
  	assert(!strncmp(version_string, s, len));
  	assert(!strncmp(", Build: ", s + len, 9));
  	assert(!strncmp(FAKE_BUILD_TAG, s + 9 + len, 12));
  	assert(!strcmp("
  
  ", s + big_str_len - 3));
256060e42   Heinrich Schuchardt   vsprintf.c: add E...
123
124
  	/* Test efi_loader specific printing */
  	efi_ut_print();
e5a9d27fd   Simon Glass   test: Add a test ...
125
126
127
128
129
130
131
132
133
134
  	printf("%s: Everything went swimmingly
  ", __func__);
  	return 0;
  }
  
  U_BOOT_CMD(
  	ut_print,	1,	1,	do_ut_print,
  	"Very basic test of printf(), etc.",
  	""
  );