annotate packages/language/c/libc/current/tests/stdio/sscanf.c @ 0:3111d98ba7b3 ecos-v1_1-release

Initial commit of eCos version 1.1
author jlarmour
date Tue, 11 May 1999 11:16:07 +0000
parents
children 443894e2e912
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 //=================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 // sscanf.c
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 // Testcase for C library sscanf()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 //=================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Cygnus eCos Public License
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
12 // Version 1.0 (the "License"); you may not use this file except in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
14 // http://sourceware.cygnus.com/ecos
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
15 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
19 // the License.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
20 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Cygnus Operating System, released
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
22 // September 30, 1998.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
23 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Cygnus. Portions created
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
25 // by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
26 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
27 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
28 //####COPYRIGHTEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
29 //=================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 // Author(s): ctarpy@cygnus.co.uk, jlarmour@cygnus.co.uk
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 // Contributors: jlarmour@cygnus.co.uk
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 // Date: 1998/6/3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 // Description: Contains testcode for C library sscanf() function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 // Declarations for test system:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 // TESTCASE_TYPE=CYG_TEST_MODULE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 // CONFIGURATION
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 #include <pkgconf/libc.h> // Configuration header
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 // INCLUDES
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 #include <stdio.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 #include <cyg/infra/testcase.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 #include <sys/cstartup.h> // C library initialisation
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 // HOW TO START TESTS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 #if defined(CYGPKG_LIBC) && defined(CYGPKG_LIBC_STDIO) && defined(CYGFUN_LIBC_STDIO_ungetc)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 # define START_TEST( test ) test(0)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 # define START_TEST( test ) CYG_EMPTY_STATEMENT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 // FUNCTIONS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 cyg_package_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 #ifdef CYGPKG_LIBC
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 cyg_iso_c_start();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 (void)main(0, NULL);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 } // cyg_package_start()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 #if defined(CYGPKG_LIBC) && defined(CYGPKG_LIBC_STDIO) && defined(CYGFUN_LIBC_STDIO_ungetc)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 // Functions to avoid having to use libc strings
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 static int
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 my_strcmp(const char *s1, const char *s2)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 for ( ; *s1 == *s2 ; s1++,s2++ )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 if ( *s1 == '\0')
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 } // for
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 return (*s1 - *s2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 } // my_strcmp()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 static char *
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 my_strcpy(char *s1, const char *s2)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 while (*s2 != '\0') {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101 *(s1++) = *(s2++);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 *s1 = '\0';
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 return s1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 } // my_strcpy()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 static void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 test( CYG_ADDRWORD data )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 static char x[300];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 static char y[300];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 char z[20];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 int ret;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 int int_test, int_test2, int_test3, int_test4;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 // Check 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 my_strcpy(x, "20");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 ret = sscanf(x, "%d", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 CYG_TEST_PASS_FAIL(int_test==20, "%d test");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 CYG_TEST_PASS_FAIL(ret == 1, "%d test return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 // Check 2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 my_strcpy(y, "PigsNoses");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 ret = sscanf(y, "%s", x);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 CYG_TEST_PASS_FAIL(my_strcmp(x, y)==0, "%s test");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 CYG_TEST_PASS_FAIL(ret == 1, "%s test return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 // Check 3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 my_strcpy(x, "FE8C");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 ret = sscanf(x, "%X", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 CYG_TEST_PASS_FAIL(int_test == 65164, "hex read leading zeroes");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 CYG_TEST_PASS_FAIL(ret == 1, "hex read leading zeroes return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 // Check 4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 my_strcpy(x, "000053Ba");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 ret = sscanf(x, "%x", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 CYG_TEST_PASS_FAIL(int_test == 21434, "hex read leading zeroes");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 CYG_TEST_PASS_FAIL(ret == 1, "hex read leading zeros return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 // Check 5
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 my_strcpy(x, "53Ba");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144 ret = sscanf(x, "%3x", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 CYG_TEST_PASS_FAIL(int_test == 1339, "hex read constrained width");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 CYG_TEST_PASS_FAIL(ret == 1, "hex read constrained width return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 // Check 6
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 my_strcpy(x, "get the first char test");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150 ret = sscanf(x, "%c", &y[0]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151 CYG_TEST_PASS_FAIL(y[0] == 'g', "%c test");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 CYG_TEST_PASS_FAIL(ret == 1, "%c test return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 // Check 7
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155 my_strcpy(x, "-5");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 ret = sscanf(x, "%d", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 CYG_TEST_PASS_FAIL(int_test == -5, "negative integer");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 CYG_TEST_PASS_FAIL(ret == 1, "negative integer return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 // Check 8
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 my_strcpy(x, "53");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 ret = sscanf(x, "%o", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 CYG_TEST_PASS_FAIL(int_test == 43, "%o test");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164 CYG_TEST_PASS_FAIL(ret == 1, "%o test return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 // Check 9
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 int_test=10;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 my_strcpy(x, "-5 0");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 ret = sscanf(x, "%*d %d", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 CYG_TEST_PASS_FAIL(int_test == 0, "assignment suppression");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 CYG_TEST_PASS_FAIL(ret == 1, "assignment suppression return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 // Check 10
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 int_test=0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 my_strcpy(x, "052");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 ret = sscanf(x, "%i", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 CYG_TEST_PASS_FAIL(int_test == 42, "octal with %i");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 CYG_TEST_PASS_FAIL(ret == 1, "octal with %i return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 // Check 10
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 int_test=0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 my_strcpy(x, "0x05f");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183 ret = sscanf(x, "%i", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 CYG_TEST_PASS_FAIL(int_test == 95, "hex with %i");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 CYG_TEST_PASS_FAIL(ret == 1, "hex with %i return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 // Check 11
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188 int_test=0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 my_strcpy(x, "+023456");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 ret = sscanf(x, "%u", &int_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 CYG_TEST_PASS_FAIL(int_test == 23456, "unsigned int with %u");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 CYG_TEST_PASS_FAIL(ret == 1, "unsigned int with %u return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 // Check 12
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 my_strcpy(x, "aString 2747 D");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196 ret = sscanf(x, "%s %d %c", y, &int_test, z);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197 CYG_TEST_PASS_FAIL( (my_strcmp(y, "aString")==0) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 (int_test == 2747) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 (z[0] == 'D'), "A few combinations #1");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 CYG_TEST_PASS_FAIL(ret == 3, "Combinations #1 return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 // Check 13
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 my_strcpy(x, "-6 52 awurble 2747 xxx");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205 ret = sscanf(x, "%d %u %s %2d %n %c",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 &int_test, &int_test2, y, &int_test3, &int_test4, z);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 CYG_TEST_PASS_FAIL( (int_test == -6) && (int_test2 == 52) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 (my_strcmp(y, "awurble")==0) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 (int_test3 == 27) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 (int_test4 == 16) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211 (z[0] == '4'), "A few combinations #2");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 CYG_TEST_PASS_FAIL(ret == 5, "Combinations #2 return code");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 #ifdef CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217 // How much _relative_ error do we allow?
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 #define FLT_TOLERANCE 1.0e-3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 #define MY_FABS(x) ((x) < 0.0 ? -(x) : (x))
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 CYG_TEST_INFO("Starting floating point specific tests");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225 float flt_test, wanted;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 // Check 14
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 my_strcpy(x, "2.5");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 wanted = 2.5;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 ret = sscanf(x, "%f", &flt_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 CYG_TEST_PASS_FAIL( MY_FABS(flt_test - wanted) <
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 MY_FABS(wanted * FLT_TOLERANCE),
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 "Simple %f test #1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 CYG_TEST_PASS_FAIL( ret == 1, "Simple %f test #1 return code" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 // Check 15
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238 my_strcpy(x, "-23.472345");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 wanted = -23.472345;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 ret = sscanf(x, "%f", &flt_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 CYG_TEST_PASS_FAIL( MY_FABS(flt_test - wanted) <
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 MY_FABS(wanted * FLT_TOLERANCE),
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243 "Simple %f test #2" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 CYG_TEST_PASS_FAIL( ret == 1, "Simple %f test #2 return code" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 // Check 16
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 my_strcpy(x, "0.0");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 ret = sscanf(x, "%f", &flt_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 CYG_TEST_PASS_FAIL( flt_test==0.0, "Simple %f test 0.0" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 CYG_TEST_PASS_FAIL( ret == 1, "Simple %f test 0.0 return code" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 // Check 17
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 my_strcpy(x, "-2.6334e00");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 wanted = -2.6334;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256 ret = sscanf(x, "%e", &flt_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 CYG_TEST_PASS_FAIL( MY_FABS(flt_test - wanted) <
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 MY_FABS(wanted * FLT_TOLERANCE),
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 "Simple %e test #1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 CYG_TEST_PASS_FAIL( ret == 1, "Simple %e test #1 return code" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 // Check 18
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 my_strcpy(x, "-2.56789e-06");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 wanted = -2.56789e-06;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 ret = sscanf(x, "%e", &flt_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 CYG_TEST_PASS_FAIL( MY_FABS(flt_test-wanted) <
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 MY_FABS(wanted * FLT_TOLERANCE),
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 "Simple %e test #2" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 CYG_TEST_PASS_FAIL( ret == 1, "Simple %e test #2 return code" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 // Check 19
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 my_strcpy(x, "-2.12389e-06");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275 wanted = -2.12389e-06;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276 ret = sscanf(x, "%g", &flt_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 CYG_TEST_PASS_FAIL( MY_FABS(flt_test-wanted) <
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 MY_FABS(wanted * FLT_TOLERANCE),
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 "Simple %g test #1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 CYG_TEST_PASS_FAIL( ret == 1, "Simple %g test #1 return code" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282 // Check 20
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283 my_strcpy(x, "1.3423345");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 wanted = 1.342335;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 ret = sscanf(x, "%g", &flt_test);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286 CYG_TEST_PASS_FAIL( MY_FABS(flt_test-wanted) <
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
287 MY_FABS(wanted * FLT_TOLERANCE),
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 "Simple %g test #2" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 CYG_TEST_PASS_FAIL( ret == 1, "Simple %g test #2 return code" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292 } // compound
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295 CYG_TEST_PASS("Floating point tests skipped - not configured");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
296 #endif // ifdef CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
297
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
298
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library "
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 "sscanf() function");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
302 } // test()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
303
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304 #endif // if defined(CYGPKG_LIBC) && defined(CYGPKG_LIBC_STDIO) && defined(CYGFUN_LIBC_STDIO_ungetc)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307 int
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308 main(int argc, char *argv[])
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library "
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313 "sscanf() function");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
314
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
315 START_TEST( test );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
316
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317 CYG_TEST_PASS_FINISH("Testing is not applicable to this configuration");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
318 } // main()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
319
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
320
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
321 // EOF sscanf.c