Update the test now sscanf is obsolete.
[scilab.git] / scilab / modules / fileio / tests / unit_tests / sscanf.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2008 - DIGITEO - Allan CORNET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- CLI SHELL MODE -->
9
10 wMode = warning("query");
11 warning("off");
12
13 n = 50;
14 nstr = strcat(string(1:n),' ');
15 fstr = strcat(strsubst(string(ones(1,n)),'1','%d'), ' ');
16
17 ierr = execstr("sscanf(1,''%d'')", "errcatch");
18 if ierr <> 999 then pause,end
19
20 [A1, A2, A3, A4, A5, A6, A7, A8] = sscanf(nstr, fstr);
21 ref = 1:8 ;
22 if or([A1, A2, A3, A4, A5, A6, A7, A8] <> ref) then pause,end
23
24 v = 'v';
25 args = strcat( v(ones(n,1)) + string(1:n)',',');
26 ierr = execstr('[' + args + '] = sscanf(nstr, fstr);','errcatch');
27 ref = 1:n ;
28 ierr = execstr('r = or([' + args + '] <> ref)','errcatch');
29 if ierr <> 0 then pause,end
30 if r <> %f then pause,end
31
32 n = 500;
33 nstr = strcat(string(1:n),' ');
34 fstr = strcat(strsubst(string(ones(1,n)),'1','%d'), ' ');
35 v = 'v';
36 args = strcat( v(ones(n,1)) + string(1:n)',',');
37 ierr = execstr('[' + args + '] = sscanf(nstr, fstr);','errcatch');
38 if ierr <> 999 then pause,end
39
40 n = 50;
41 nstr = strcat(string(1:n),' ');
42 fstr = strcat(strsubst(string(ones(1,n)),'1','%d'), ' ');
43
44 mputl(nstr,TMPDIR+'/fscanf.txt');
45 [A1, A2, A3, A4, A5, A6, A7, A8] = fscanf(TMPDIR+'/fscanf.txt',fstr);
46 ref = 1:8 ;
47 if or([A1, A2, A3, A4, A5, A6, A7, A8] <> ref) then pause,end
48
49 v = 'v';
50 args = strcat( v(ones(n,1)) + string(1:n)',',');
51 ierr = execstr('[' + args + '] = fscanf(TMPDIR+''/fscanf.txt'', fstr);','errcatch');
52 ref = 1:n ;
53 ierr = execstr('r = or([' + args + '] <> ref)','errcatch');
54 if ierr <> 0 then pause,end
55 if r <> %f then pause,end
56
57 n = 500;
58 nstr = strcat(string(1:n),' ');
59 fstr = strcat(strsubst(string(ones(1,n)),'1','%d'), ' ');
60 v = 'v';
61 args = strcat( v(ones(n,1)) + string(1:n)',',');
62 ierr = execstr('[' + args + '] = fscanf(TMPDIR+''/fscanf.txt'', fstr);','errcatch');
63 if ierr <> 999 then pause,end
64
65 //test format %i %d
66 if sscanf('123','%i')<>123 then pause,end
67 if sscanf('     123','%i')<>123 then pause,end
68 if sscanf('123','%2i')<>12 then pause,end
69 if sscanf('123','%0i')<>123 then pause,end
70 if sscanf('123','%5i')<>123 then pause,end
71 //test format %u
72 if sscanf('+123','%u')<>123 then pause,end
73 if sscanf(' 123','%2u')<>12 then pause,end
74 if sscanf('123','%0u')<>123 then pause,end
75 if sscanf('+123','%5u')<>123 then pause,end
76 //test format %e %f %g
77
78 if sscanf('123','%e')<>123 then pause,end
79 if sscanf('     123','%e')<>123 then pause,end
80 if sscanf('123','%2e')<>12 then pause,end
81 if sscanf('123','%0e')<>123 then pause,end
82 if sscanf('123','%5e')<>123 then pause,end
83
84 //test format %s
85 if sscanf('123','%s')<>'123' then pause,end
86 if sscanf('     123','%s')<>'123' then pause,end
87 if sscanf('123','%2s')<>'12' then pause,end
88 if sscanf('123','%0s')<>'123' then pause,end
89 if sscanf('123','%5s')<>'123' then pause,end
90
91 //test format %o
92 if sscanf('123','%o')<>83 then pause,end
93 if sscanf('     123','%o')<>83 then pause,end
94 if sscanf('123','%2o')<>10 then pause,end
95 if sscanf('123','%0o')<>83 then pause,end
96 if sscanf('123','%5o')<>83 then pause,end
97
98 //test format %x
99 if sscanf('123','%x')<>291 then pause,end
100 if sscanf('     123','%x')<>291 then pause,end
101 if sscanf('123','%2x')<>18 then pause,end
102 if sscanf('123','%0x')<>291 then pause,end
103 if sscanf('123','%5x')<>291 then pause,end
104
105 //test format %c
106 if sscanf('123','%c')<>'1' then pause,end
107 if sscanf('     123','%c')<>' ' then pause,end
108 if sscanf('123','%0c')<>'1' then pause,end
109
110 //test des format complexes 
111 if sscanf('123 4','%*s%s')<>'4' then pause,end
112 if sscanf('123 4','123%e')<>4 then pause,end
113 [a,b,c]=sscanf('xxxxx 4 test 23.45','xxxxx%i%s%e')
114 if a<>4|b<>'test'|c<>23.45 then pause,end
115
116 [a,b]=sscanf('123\n456','%e%e')
117 if a<>123|b<>456 then pause,end
118
119 warning(wMode);