Mercurial > octave-nkf
changeset 9122:8ca06fd9c6ef
test lazy copying in structures
author | Thorsten Meyer <thorsten.meyier@gmx.de> |
---|---|
date | Wed, 15 Apr 2009 12:29:31 +0200 |
parents | bb62bc406ea7 |
children | f39b98237d5c |
files | test/ChangeLog test/test_struct.m |
diffstat | 2 files changed, 59 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/test/ChangeLog Wed Apr 15 09:40:49 2009 +0200 +++ b/test/ChangeLog Wed Apr 15 12:29:31 2009 +0200 @@ -1,3 +1,8 @@ +2009-04-15 Thorsten Meyer <thorsten.meyier@gmx.de> + + * test_struct.m: Add tests for lazy copying in nested assignments + of struct elements. + 2009-04-12 Thorsten Meyer <thorsten.meyier@gmx.de> * test_contin.m, test_error.m, test_eval-catch.m, test_for.m,
--- a/test/test_struct.m Wed Apr 15 09:40:49 2009 +0200 +++ b/test/test_struct.m Wed Apr 15 12:29:31 2009 +0200 @@ -197,3 +197,57 @@ %! c(3, 3, 3, 3).value = 1; %! c([1, 3], 2, :, [3, 4]).value = 1; +## test lazy copying in structs: nested assignment to self +%!test +%! a.a = 1; +%! a.b = a; +%! a.b.c = a; +%! assert (a.b.c.b, struct ("a", 1)); + +## test lazy copying in structs: indirect nested assignment to self +%!test +%! a.a = 1; +%! a.b = 2; +%! b.c = a; +%! b.d = 3; +%! c.d = b; +%! c.e = 4; +%! a.b = c; +%! a.b.e = a; +%! assert (a.b.e.b.d.c, struct ("a", 1, "b", 2)); + +## test lazy copying in structs: nested assignment via function +%!function aa = do_nest (a); +%! aa = a; +%! aa.b = a; +%! endfunction +%!test +%! a.c = 1; +%! a = do_nest (a); +%! a = do_nest (a); +%! a = do_nest (a); +%! assert (a.b.b.b, struct ("c", 1)); + +## test lazy copying in structs: nested assignment via function +%!function aa = do_nest (a); +%! aa = a; +%! aa.b = a; +%! aa.b.c = aa; +%! endfunction +%!test +%! a.c = 1; +%! a = do_nest (a); +%! a = do_nest (a); +%! a = do_nest (a); +%! assert (a.b.c.b.b.c.b.b.c.b, struct ("c", 1)); + +## test lazy copying in structs: nested assignment on different levels. +%!test +%! a.b = 1; +%! b.c = a; +%! b.d.e = a; +%! b.f.g.h = a; +%! b.i.j.k.l = a; +%! a.m = b; +%! a.m.c.b = a; +%! assert (a.m.c.b.m.i.j.k.l, struct ("b", 1));