| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /** |
| * @assertion abstract void forEach(void f(K key, V value)) |
| * It is an error to add or remove keys from the map during iteration. |
| * @description Tries to remove or add entries in [f] while iterating over the |
| * map, expects a ConcurrentModificationError every time regardless of whether |
| * or not it is the current key that's being removed. |
| * @author msyabro |
| */ |
| library forEach_A02_t01; |
| |
| import "../../../Utils/expect.dart"; |
| |
| test(Map create([Map content])) { |
| Map map = create(); |
| |
| map["1"] = 3; |
| map["2"] = 5; |
| |
| Expect.throws(() { |
| map.forEach((var key, var value) { |
| map["3"] = key; |
| }); |
| }, (e)=> e is ConcurrentModificationError |
| ); |
| |
| Expect.throws(() { |
| map.forEach((var key, var value) { |
| map.remove("2"); |
| }); |
| }, (e)=> e is ConcurrentModificationError |
| ); |
| Expect.throws(() { |
| map.forEach((var key, var value) { |
| map.remove(key); |
| }); |
| }, (e)=> e is ConcurrentModificationError |
| ); |
| |
| map["1"] = 1; |
| map["2"] = 2; |
| Expect.throws(() { |
| map.forEach((var key, var value) { |
| map.clear(); |
| }); |
| }, (e)=> e is ConcurrentModificationError |
| ); |
| } |