insertion in container with ref > 1 fixed
[scilab.git] / scilab / modules / ast / tests / nonreg_tests / bug_16556.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2020 - Cedric Delamarre
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // <-- NO CHECK REF -->
10 //
11 // <-- Non-regression test for bug 16556 -->
12 //
13 // <-- Bugzilla URL -->
14 // http://bugzilla.scilab.org/16556
15 //
16 // <-- Short Description -->
17 // Modifying nested lists/arrays in function changes variable in calling scope
18
19 // Define variables
20 testArray = list();
21 for i=1:1:10
22     testArray($+1) = list();
23     for j=1:1:10
24         testArray(i)($+1) = [];
25         testArray(i)(j).testMember = 1;
26     end
27 end
28 testArrayOrig = testArray;
29
30 // Define functions
31 function outArray = testFunc(inArray)
32     for i=1:1:10
33         for j=1:1:10
34             inArray(i)(j).testMember = 5
35         end
36     end
37     outArray = inArray;
38 endfunction
39
40 // Send the variable as argument to the function
41 testArrayOut = testFunc(testArray);
42
43 assert_checkequal(testArrayOut(1)(1).testMember, 5);
44 assert_checkequal(testArrayOrig(1)(1).testMember, 1);
45 assert_checkequal(testArray(1)(1).testMember, 1);