setfield and bug_5588 tests updated because setfield function returns now variable...
[scilab.git] / scilab / modules / data_structures / tests / nonreg_tests / bug_5588.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2010 - INRIA - Serge Steer
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- CLI SHELL MODE -->
8 // <-- Non-regression test for bug 5588 -->
9 //
10 // <-- Bugzilla URL -->
11 // http://bugzilla.scilab.org/show_bug.cgi?id=5588
12 //
13 // <-- Short Description -->
14 // null() of a tlist() field shifts all remaining values with respect to
15 // field names.
16 // tlist null assignment indexed by a name
17 clear  %0_i_a %0_i_A
18 t=tlist(["a","b","c"],10,"foo");
19 if execstr("t.b=null()","errcatch")==0 then bugmes();quit;end
20 function t=%0_i_a(i,void,t)
21     f=getfield(1,t);
22     k=find(f==i);
23     if k<>[] then
24         f(k)=[];
25         t = setfield(k,null(),t);
26         t = setfield(1,f,t);
27     end
28 endfunction
29 if execstr("t.b=null()","errcatch")<>0 then bugmes();quit;end
30 if or(t<>tlist(["a","c"],"foo"))  then bugmes();quit;end
31 // tlist null assignment indexed by a number
32 t=tlist(["a","b","c"],10,"foo");
33 if execstr("t(2)=null()","errcatch")<>0 then bugmes();quit;end
34 if or(t<>tlist(["a","b","c"],"foo"))  then bugmes();quit;end
35 //struct null assignment indexed by a name
36 T.x="foo";T.y=33;
37 if execstr("size(T)=null()","errcatch")==0 then bugmes();quit;end
38 if execstr("T(1,1)=null()","errcatch")==0 then bugmes();quit;end
39 if execstr("T.x=null()","errcatch")<>0 then bugmes();quit;end
40 T1.y=33;
41 if or(T<>T1) then bugmes();quit;end
42 T1.x="foo";
43 if execstr("T(1)=null()","errcatch")==0 then bugmes();quit;end
44 //cell null assignment
45 c=makecell([1,2],1,"xyz");
46 if execstr("c(1,1)=null()","errcatch")==0 then bugmes();quit;end
47 if execstr("size(c)=null()","errcatch")==0 then bugmes();quit;end
48 //sublist null assigment indexed by a name
49 L=tlist(["foo","x","y"],mlist(["A","b","c"],10,"zoo"),1:5);
50 if execstr("L.x.b=null()","errcatch")==0 then bugmes();quit;end
51 %0_i_A=%0_i_a;
52 if execstr("L.x.b=null()","errcatch")<>0 then bugmes();quit;end
53 if or(L<>tlist(["foo","x","y"],mlist(["A","c"],"zoo"),1:5)) then bugmes();quit;end
54 //sublist null assigment indexed by a number
55 clear %0_i_A
56 L=mlist(["foo","x","y"],tlist(["A","b","c"],10,"zoo"),1:5);
57 if execstr("L.x(2)=null()","errcatch")<>0 then bugmes();quit;end
58 if or(L<>mlist(["foo","x","y"],tlist(["A","b","c"],"zoo"),1:5)) then bugmes();quit;end
59 //try a more complex context
60 L=tlist(["foo","x","y"],list(33,mlist(["A","b","c"],10,"zoo")),1:5);
61 %0_i_A=%0_i_a;
62 if execstr("L.x(2).b=null()","errcatch")<>0 then bugmes();quit;end
63 if or(L<>tlist(["foo","x","y"],list(33,mlist(["A","c"],"zoo")),1:5)) then bugmes();quit;end