Mercurial > hg > octave-nkf
annotate test/test_struct.m @ 9122:8ca06fd9c6ef
test lazy copying in structures
author | Thorsten Meyer <thorsten.meyier@gmx.de> |
---|---|
date | Wed, 15 Apr 2009 12:29:31 +0200 |
parents | f5b51f54f44e |
children | 67fa54583fe8 |
rev | line source |
---|---|
8920 | 1 ## Copyright (C) 2006, 2007, 2009 John W. Eaton |
7016 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
5590 | 19 %% test/octave.test/struct/fieldnames-1.m |
20 %!test | |
21 %! s.a = 1; | |
22 %! c = fieldnames (s); | |
23 %! assert(iscell (c) && strcmp (c{1}, "a")); | |
24 | |
25 %% test/octave.test/struct/fieldnames-2.m | |
26 %!test | |
27 %! s.a.b = 1; | |
28 %! c = fieldnames (s.a); | |
29 %! assert(iscell (c) && strcmp (c{1}, "b")); | |
30 | |
31 %% test/octave.test/struct/fieldnames-3.m | |
5751 | 32 %!error <Invalid call to fieldnames.*> fieldnames (); |
5590 | 33 |
34 %% test/octave.test/struct/fieldnames-4.m | |
35 %!test | |
36 %! s.a = 1; | |
5751 | 37 %! fail("fieldnames (s, 1)","Invalid call to fieldnames.*"); |
5590 | 38 |
39 %% test/octave.test/struct/fieldnames-5.m | |
40 %!error fieldnames (1); | |
41 | |
42 %% test/octave.test/struct/isfield-1.m | |
43 %!test | |
44 %! s.aaa = 1; | |
45 %! s.a = 2; | |
46 %! assert(isfield (s, "a")); | |
47 | |
48 %% test/octave.test/struct/isfield-2.m | |
49 %!test | |
50 %! s.aaa = 1; | |
51 %! s.a = 2; | |
52 %! assert(!(isfield (s, "b"))); | |
53 | |
54 %% test/octave.test/struct/isfield-3.m | |
5751 | 55 %!error <Invalid call to isfield.*> isfield (); |
5590 | 56 |
57 %% test/octave.test/struct/isfield-4.m | |
58 %!test | |
59 %! s.aaa = 1; | |
60 %! s.a = 2; | |
5751 | 61 %! fail("isfield (s, 'a', 3);","Invalid call to isfield.*"); |
5590 | 62 |
63 %% test/octave.test/struct/isfield-5.m | |
64 %!assert(isfield (1, "m") == 0); | |
65 | |
66 %% test/octave.test/struct/isfield-6.m | |
67 %!test | |
68 %! s.a = 2; | |
69 %! assert(isfield (s, 2) == 0); | |
70 | |
71 %% test/octave.test/struct/isstruct-1.m | |
72 %!assert(!(isstruct (1))); | |
73 | |
74 %% test/octave.test/struct/isstruct-2.m | |
75 %!assert(!(isstruct ([1, 2]))); | |
76 | |
77 %% test/octave.test/struct/isstruct-3.m | |
78 %!assert(!(isstruct ([]))); | |
79 | |
80 %% test/octave.test/struct/isstruct-4.m | |
81 %!assert(!(isstruct ([1, 2; 3, 4]))); | |
82 | |
83 %% test/octave.test/struct/isstruct-5.m | |
84 %!assert(!(isstruct ("t"))); | |
85 | |
86 %% test/octave.test/struct/isstruct-6.m | |
87 %!assert(!(isstruct ("test"))); | |
88 | |
89 %% test/octave.test/struct/isstruct-7.m | |
90 %!assert(!(isstruct (["test"; "ing"]))); | |
91 | |
92 %% test/octave.test/struct/isstruct-8.m | |
93 %!test | |
94 %! s.a = 1; | |
95 %! assert(isstruct (s)); | |
96 | |
97 %% test/octave.test/struct/isstruct-9.m | |
98 %!test | |
99 %! s.a.b = 1; | |
100 %! assert(isstruct (s.a)); | |
101 | |
102 %% test/octave.test/struct/isstruct-10.m | |
5751 | 103 %!error <Invalid call to isstruct.*> isstruct (); |
5590 | 104 |
105 %% test/octave.test/struct/isstruct-11.m | |
106 %!test | |
107 %! s.a = 1; | |
5751 | 108 %! fail("isstruct (s, 1)","Invalid call to isstruct.*"); |
5590 | 109 |
8603
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
110 ## increment element of matrix stored in struct array field |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
111 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
112 %! a = struct("c", {[1, 2, 3], [4, 5, 6], [7, 8, 9]}); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
113 %! a(2).c(3)++; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
114 %! assert(a(2).c, [4, 5, 7]); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
115 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
116 ## create struct array by assignment to cs-list |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
117 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
118 %! [a(1:2).x] = deal (1, 3); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
119 %! assert(a, struct("x", {1, 3})); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
120 %! assert({a(1:2).x}, {1, 3}); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
121 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
122 ## assign to subrange of struct array field |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
123 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
124 %! b = struct ("name", {"a", "b", "c"; "d", "e", "f"}, "value", 100); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
125 %! [b(1:2, [1,3]).name] = deal("aaa", "ddd", "ccc", "fff"); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
126 %! assert ({b.name}, {"aaa", "ddd", "b", "e", "ccc", "fff"}); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
127 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
128 ## index into nested struct arrays |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
129 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
130 %! a = struct ("name", {"a", "b", "c"; "d", "e", "f"}, "value", 0); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
131 %! a(2).value = a; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
132 %! assert (a(2).value(2,3).name, "f"); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
133 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
134 ## assign to subrange of field in nested struct array |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
135 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
136 %! b = struct ("name", {"a", "b", "c"; "d", "e", "f"}, "value", 0); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
137 %! b(3, 1).value = b; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
138 %! [b(3, 1).value(1, [1, 3]).name] = deal ("aaa", "ccc"); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
139 %! assert (size (b), [3, 3]); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
140 %! assert (b(3,1).value(1, 3).name, "ccc"); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
141 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
142 ## test 4 dimensional struct array |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
143 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
144 %! c(4, 4, 4, 4).name = "a"; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
145 %! c(3, 3, 3, 3).value = 1; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
146 %! assert (c(2,2,2,2), struct ("name", [], "value", [])); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
147 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
148 ## assign to subrange of field in 4d struct array |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
149 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
150 %! c(4, 4, 4, 4).name = "a"; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
151 %! c(3, 3, 3, 3).value = 1; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
152 %! [c([1, 3], 2, :, [3, 4]).value] = deal (1); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
153 %! assert (length(find([c.value] == 1)), 17); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
154 %! assert (length(find([c.value])), 17); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
155 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
156 ## swap elements of struct array |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
157 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
158 %! b = struct ("name", {"a", "b", "c"; "d", "e", "f"}, "value", 0); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
159 %! [b([2, 1], [3, 1]).name] = deal(b([1, 2], [1, 2]).name); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
160 %! assert ({b.name}, {"e", "b", "b", "e", "d", "a"}); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
161 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
162 ## test internal ordering of struct array fields |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
163 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
164 %! c(4, 4, 4, 4).value = 3; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
165 %! c(1, 2, 3, 4).value = 2; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
166 %! c(3, 3, 3, 3).value = 1; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
167 %! d = reshape ({c.value}, size(c)); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
168 %! assert ([d{4, 4, 4, 4}, d{1, 2, 3, 4}, d{3, 3, 3, 3}], |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
169 %! [3, 2, 1]); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
170 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
171 ## test assignment to mixed cs-list of field element subranges |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
172 %!test |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
173 %! b = struct ("name", {"a", "b", "c"; "d", "e", "f"}, "value", 100); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
174 %! [b(1:2, [1, 3]).name, b(2, 1:3).value] = ... |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
175 %! deal (1, 2, 3, 4, "5", "6", "7"); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
176 %! assert ({b.name}, {1, 2, "b", "e", 3, 4}); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
177 %! assert ({b.value}, {100, "5", 100, "6", 100, "7"}); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
178 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
179 %!error <a cs-list cannot be further indexed> |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
180 %! [a(1:3).x] = deal ([1, 5], [3, 7], [8, 9]); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
181 %! [a(2:3).x(2)] = deal (10, 11); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
182 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
183 %!error <can't perform indexing operations for cs-list type> |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
184 %! [a(1:3).x] = deal ([1, 5], [3, 7], [8, 9]); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
185 %! a(2:3).x(2); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
186 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
187 %!error <Index exceeds matrix dimension> |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
188 %! a(1).x.x = 1; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
189 %! a(2).x; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
190 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
191 %!error <invalid number of output arguments for constant expression> |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
192 %! a = struct ("value", {1, 2, 3, 4, 5}); |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
193 %! [a(2:4).value] = 1; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
194 |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
195 %!error <invalid assignment to cs-list outside multiple assignment> |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
196 %! c(4, 4, 4, 4).name = "a"; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
197 %! c(3, 3, 3, 3).value = 1; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
198 %! c([1, 3], 2, :, [3, 4]).value = 1; |
4c68e26e3ba1
Add tests to prevent regression of struct array indexing
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7017
diff
changeset
|
199 |
9122
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
200 ## test lazy copying in structs: nested assignment to self |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
201 %!test |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
202 %! a.a = 1; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
203 %! a.b = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
204 %! a.b.c = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
205 %! assert (a.b.c.b, struct ("a", 1)); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
206 |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
207 ## test lazy copying in structs: indirect nested assignment to self |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
208 %!test |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
209 %! a.a = 1; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
210 %! a.b = 2; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
211 %! b.c = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
212 %! b.d = 3; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
213 %! c.d = b; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
214 %! c.e = 4; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
215 %! a.b = c; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
216 %! a.b.e = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
217 %! assert (a.b.e.b.d.c, struct ("a", 1, "b", 2)); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
218 |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
219 ## test lazy copying in structs: nested assignment via function |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
220 %!function aa = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
221 %! aa = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
222 %! aa.b = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
223 %! endfunction |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
224 %!test |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
225 %! a.c = 1; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
226 %! a = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
227 %! a = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
228 %! a = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
229 %! assert (a.b.b.b, struct ("c", 1)); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
230 |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
231 ## test lazy copying in structs: nested assignment via function |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
232 %!function aa = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
233 %! aa = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
234 %! aa.b = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
235 %! aa.b.c = aa; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
236 %! endfunction |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
237 %!test |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
238 %! a.c = 1; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
239 %! a = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
240 %! a = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
241 %! a = do_nest (a); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
242 %! assert (a.b.c.b.b.c.b.b.c.b, struct ("c", 1)); |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
243 |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
244 ## test lazy copying in structs: nested assignment on different levels. |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
245 %!test |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
246 %! a.b = 1; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
247 %! b.c = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
248 %! b.d.e = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
249 %! b.f.g.h = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
250 %! b.i.j.k.l = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
251 %! a.m = b; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
252 %! a.m.c.b = a; |
8ca06fd9c6ef
test lazy copying in structures
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
9112
diff
changeset
|
253 %! assert (a.m.c.b.m.i.j.k.l, struct ("b", 1)); |