70f71f2705cdabb0fd02f9bdbb00563eb727b12f
[scilab.git] / scilab / modules / data_structures / tests / unit_tests / struct.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2010 - DIGITEO - Sylvestre LEDRU
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- ENGLISH IMPOSED -->
9 // <-- CLI SHELL MODE -->
10
11 // unit tests for structs
12 // =============================================================================
13
14 date_st=struct('jour',25,'mois','DEC','annee',2006);
15
16 if date_st.jour <> 25 then pause, end
17 if date_st.mois <> 'DEC' then pause, end
18 if date_st.annee <> 2006 then pause, end
19
20 date_st.jour=19;
21 if date_st.jour <> 19 then pause, end
22
23 date_st.mois='AOU';
24 if date_st.mois <> 'AOU' then pause, end
25
26 date_st.annee=1973;
27 if date_st.annee <> 1973 then pause, end
28
29 date_st.semaine=32;
30 if date_st.semaine <> 32 then pause, end
31
32 // Example from bug #7244
33 clear;
34 foo(1) = 1;
35 foo(2) = 2;
36 foo(3) = 3;
37 foo = foo([1 3]);
38 foo(3) = 2;
39 if [1; 3; 2] <> foo then pause, end
40
41 clear;
42 foo(1) = 1;
43 foo(2) = 2;
44 foo(3) = 3;
45 foo = foo([%T %F %T]);
46 foo(3) = 2; 
47 if or([1; 3; 2] <> foo) then pause, end
48
49 clear;
50 foo(1).bar = 1;
51 foo(2).bar = 2;
52 foo(3).bar = 3;
53 foo = foo([1 3]);
54 foo(3).bar = 2;
55 if foo(1).bar <> 1 then pause, end
56 if foo(2).bar <> 3 then pause, end
57 if foo(3).bar <> 2 then pause, end
58
59 out.a=1;
60 out.b=2;
61 if size(out,'*') <> 1 then pause, end
62
63 out(2,3).b=2;
64 if or(size(out) <> [2 3]) then pause, end
65
66 s=struct("txt","Hello","num",%pi,"pol",%z^2+1);
67 if s.pol <> %z^2+1 then pause, end
68 if s.txt <> "Hello" then pause, end
69
70 s.txt=null();s.num=null();s.pol=null();
71 if isfield( s , "txt"  ) then pause, end
72 if isfield( s , "num"  ) then pause, end
73 if isfield( s , "pol"  ) then pause, end
74 if or(isfield( s , ["pol", "num", "txt"]  )) then pause, end
75 if or(size(s) <> [1 1]) then pause, end
76
77 z.y = 42;
78 y.o = z;
79 y.d.e = z;
80 y.f.r.h = z;
81 y.i.j.k.l = z;
82 z.m = y;
83 z.m.o.y = z;
84 if z.m.o.y.m.i.j.k.l.y <> 42 then pause, end
85 if ~isfield(z.m.o.y.m.i.j.k.l,"y") then pause, end
86
87 z.z = 21;
88 z.b = z;
89 z.b.c = z;
90 if z.z <> 21 then pause, end
91 if z.b.c.z <> 21 then pause, end
92 if ~isfield(z,"b") then pause, end
93 if ~isfield(z.b,"c") then pause, end
94
95 z(1).x.x = 1;
96 if execstr('z(42).x','errcatch')<>999 then pause,end