# HG changeset patch # User Thorsten Meyer # Date 1245872004 -7200 # Node ID 26c72e89922829bf7c5066c811e561431e9761a7 # Parent 333b31ce34349f97a0f1fab226e45e13d9ce9e76 Add tests for preservation of key order diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2009-06-24 Thorsten Meyer + + * oct-map.cc (Octave_map::squeeze, Octave_map::permute, + Octave_map::transpose, Octave_map::reshape, Octave_map::concat, + Octave_map::index): Add tests for preservation of key order in + struct arrays. + 2009-06-24 Jaroslav Hajek * pt-mat.cc (get_concat_class): Use empty string as zero value. diff --git a/src/oct-map.cc b/src/oct-map.cc --- a/src/oct-map.cc +++ b/src/oct-map.cc @@ -70,6 +70,13 @@ return retval; } +/* +%!# test preservation of keys by squeeze +%!test +%! x(1,1,1,1).d = 10; x(3,5,1,7).a = "b"; x(2,4,1,7).f = 27; +%! assert (fieldnames (squeeze (x)), {"d"; "a"; "f"}); +*/ + Octave_map Octave_map::permute (const Array& vec, bool inv) const { @@ -91,6 +98,13 @@ return retval; } +/* +%!# test preservation of key order by permute +%!test +%! x(1,1,1,1).d = 10; x(3,5,1,7).a = "b"; x(2,4,1,7).f = 27; +%! assert (fieldnames (permute (x, [3, 4, 1, 2])), {"d"; "a"; "f"}); +*/ + Cell& Octave_map::contents (const std::string& k) { @@ -165,6 +179,15 @@ return retval; } +/* +%!# test preservation of key order by transpose +%!test +%! x(1,1).d = 10; x(3,5).a = "b"; x(2,4).f = 27; +%! assert (fieldnames (transpose (x)), {"d"; "a"; "f"}); +%! assert (fieldnames (x'), {"d"; "a"; "f"}); +%! assert (fieldnames (x.'), {"d"; "a"; "f"}); +*/ + Octave_map Octave_map::reshape (const dim_vector& new_dims) const { @@ -186,6 +209,13 @@ return retval; } +/* +%!# test preservation of key order by reshape +%!test +%! x(1,1).d = 10; x(4,6).a = "b"; x(2,4).f = 27; +%! assert (fieldnames (reshape (x, 3, 8)), {"d"; "a"; "f"}); +*/ + void Octave_map::resize (const dim_vector& dv, bool fill) { @@ -256,6 +286,14 @@ return retval; } +/* +%!# test preservation of key order by concatenation +%!test +%! x(1, 1).d = 10; x(4, 6).a = "b"; x(2, 4).f = 27; +%! y(1, 6).f = 11; y(1, 6).a = "c"; y(1, 6).d = 33; +%! assert (fieldnames ([x; y]), {"d"; "a"; "f"}); +*/ + static bool keys_ok (const Octave_map& a, const Octave_map& b, string_vector& keys) { @@ -490,6 +528,13 @@ } /* +%!# test preservation of key order by indexing +%!test +%! x(1, 1).d = 10; x(4, 6).a = "b"; x(2, 4).f = 27; +%! assert (fieldnames (x([1, 2], [2:5])), {"d"; "a"; "f"}); +*/ + +/* ;;; Local Variables: *** ;;; mode: C++ *** ;;; End: ***