comparison src/oct-map.cc @ 12022:bf661469a039 release-3-2-x

Add tests for preservation of key order
author Thorsten Meyer <thorsten.meyier@gmx.de>
date Thu, 25 Jun 2009 06:36:42 +0200
parents 00b55509f5b5
children b4fdfee405b5
comparison
equal deleted inserted replaced
12021:2e4cec91015a 12022:bf661469a039
68 retval.key_list = key_list; 68 retval.key_list = key_list;
69 69
70 return retval; 70 return retval;
71 } 71 }
72 72
73 /*
74 %!# test preservation of keys by squeeze
75 %!test
76 %! x(1,1,1,1).d = 10; x(3,5,1,7).a = "b"; x(2,4,1,7).f = 27;
77 %! assert (fieldnames (squeeze (x)), {"d"; "a"; "f"});
78 */
79
73 Octave_map 80 Octave_map
74 Octave_map::permute (const Array<int>& vec, bool inv) const 81 Octave_map::permute (const Array<int>& vec, bool inv) const
75 { 82 {
76 Octave_map retval (dims ()); 83 Octave_map retval (dims ());
77 84
88 // Preserve order of keys. 95 // Preserve order of keys.
89 retval.key_list = key_list; 96 retval.key_list = key_list;
90 97
91 return retval; 98 return retval;
92 } 99 }
100
101 /*
102 %!# test preservation of key order by permute
103 %!test
104 %! x(1,1,1,1).d = 10; x(3,5,1,7).a = "b"; x(2,4,1,7).f = 27;
105 %! assert (fieldnames (permute (x, [3, 4, 1, 2])), {"d"; "a"; "f"});
106 */
93 107
94 Cell& 108 Cell&
95 Octave_map::contents (const std::string& k) 109 Octave_map::contents (const std::string& k)
96 { 110 {
97 maybe_add_to_key_list (k); 111 maybe_add_to_key_list (k);
163 retval.key_list = key_list; 177 retval.key_list = key_list;
164 178
165 return retval; 179 return retval;
166 } 180 }
167 181
182 /*
183 %!# test preservation of key order by transpose
184 %!test
185 %! x(1,1).d = 10; x(3,5).a = "b"; x(2,4).f = 27;
186 %! assert (fieldnames (transpose (x)), {"d"; "a"; "f"});
187 %! assert (fieldnames (x'), {"d"; "a"; "f"});
188 %! assert (fieldnames (x.'), {"d"; "a"; "f"});
189 */
190
168 Octave_map 191 Octave_map
169 Octave_map::reshape (const dim_vector& new_dims) const 192 Octave_map::reshape (const dim_vector& new_dims) const
170 { 193 {
171 Octave_map retval; 194 Octave_map retval;
172 195
183 else 206 else
184 retval = *this; 207 retval = *this;
185 208
186 return retval; 209 return retval;
187 } 210 }
211
212 /*
213 %!# test preservation of key order by reshape
214 %!test
215 %! x(1,1).d = 10; x(4,6).a = "b"; x(2,4).f = 27;
216 %! assert (fieldnames (reshape (x, 3, 8)), {"d"; "a"; "f"});
217 */
188 218
189 void 219 void
190 Octave_map::resize (const dim_vector& dv, bool fill) 220 Octave_map::resize (const dim_vector& dv, bool fill)
191 { 221 {
192 if (dv != dims ()) 222 if (dv != dims ())
254 } 284 }
255 285
256 return retval; 286 return retval;
257 } 287 }
258 288
289 /*
290 %!# test preservation of key order by concatenation
291 %!test
292 %! x(1, 1).d = 10; x(4, 6).a = "b"; x(2, 4).f = 27;
293 %! y(1, 6).f = 11; y(1, 6).a = "c"; y(1, 6).d = 33;
294 %! assert (fieldnames ([x; y]), {"d"; "a"; "f"});
295 */
296
259 static bool 297 static bool
260 keys_ok (const Octave_map& a, const Octave_map& b, string_vector& keys) 298 keys_ok (const Octave_map& a, const Octave_map& b, string_vector& keys)
261 { 299 {
262 bool retval = false; 300 bool retval = false;
263 301
488 526
489 return retval; 527 return retval;
490 } 528 }
491 529
492 /* 530 /*
531 %!# test preservation of key order by indexing
532 %!test
533 %! x(1, 1).d = 10; x(4, 6).a = "b"; x(2, 4).f = 27;
534 %! assert (fieldnames (x([1, 2], [2:5])), {"d"; "a"; "f"});
535 */
536
537 /*
493 ;;; Local Variables: *** 538 ;;; Local Variables: ***
494 ;;; mode: C++ *** 539 ;;; mode: C++ ***
495 ;;; End: *** 540 ;;; End: ***
496 */ 541 */