| Index: tests/corelib/json_map_test.dart
|
| diff --git a/tests/corelib/json_map_test.dart b/tests/corelib/json_map_test.dart
|
| deleted file mode 100644
|
| index 8524e0088d82832b15fcd4a3d83dc1d6634754d6..0000000000000000000000000000000000000000
|
| --- a/tests/corelib/json_map_test.dart
|
| +++ /dev/null
|
| @@ -1,334 +0,0 @@
|
| -// 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.
|
| -
|
| -library json_map_test;
|
| -
|
| -import "package:expect/expect.dart";
|
| -import 'dart:convert' show JSON;
|
| -import 'dart:collection' show LinkedHashMap, HashMap;
|
| -
|
| -bool useReviver = false;
|
| -Map jsonify(Map map) {
|
| - String encoded = JSON.encode(map);
|
| - return useReviver
|
| - ? JSON.decode(encoded, reviver: (key, value) => value)
|
| - : JSON.decode(encoded);
|
| -}
|
| -
|
| -List listEach(Map map) {
|
| - var result = [];
|
| - map.forEach((String key, value) {
|
| - result.add(key);
|
| - result.add(value);
|
| - });
|
| - return result;
|
| -}
|
| -
|
| -void main() {
|
| - test(false);
|
| - test(true);
|
| -}
|
| -
|
| -void test(bool revive) {
|
| - useReviver = revive;
|
| - testEmpty(jsonify({}));
|
| - testAtoB(jsonify({'a': 'b'}));
|
| -
|
| - Map map = jsonify({});
|
| - map['a'] = 'b';
|
| - testAtoB(map);
|
| -
|
| - map = jsonify({});
|
| - Expect.equals('b', map.putIfAbsent('a', () => 'b'));
|
| - testAtoB(map);
|
| -
|
| - map = jsonify({});
|
| - map.addAll({'a': 'b'});
|
| - testAtoB(map);
|
| -
|
| - testOrder(['a', 'b', 'c', 'd', 'e', 'f']);
|
| -
|
| - testProto();
|
| - testToString();
|
| - testConcurrentModifications();
|
| - testType();
|
| - testClear();
|
| -
|
| - testListEntry();
|
| - testMutation();
|
| -}
|
| -
|
| -void testEmpty(Map map) {
|
| - for (int i = 0; i < 2; i++) {
|
| - Expect.equals(0, map.length);
|
| - Expect.isTrue(map.isEmpty);
|
| - Expect.isFalse(map.isNotEmpty);
|
| - Expect.listEquals([], map.keys.toList());
|
| - Expect.listEquals([], map.values.toList());
|
| - Expect.isNull(map['a']);
|
| - Expect.listEquals([], listEach(map));
|
| - Expect.isFalse(map.containsKey('a'));
|
| - Expect.isFalse(map.containsValue('a'));
|
| - Expect.isNull(map.remove('a'));
|
| - testLookupNonExistingKeys(map);
|
| - testLookupNonExistingValues(map);
|
| - map.clear();
|
| - }
|
| -}
|
| -
|
| -void testAtoB(Map map) {
|
| - Expect.equals(1, map.length);
|
| - Expect.isFalse(map.isEmpty);
|
| - Expect.isTrue(map.isNotEmpty);
|
| - Expect.listEquals(['a'], map.keys.toList());
|
| - Expect.listEquals(['b'], map.values.toList());
|
| - Expect.equals('b', map['a']);
|
| - Expect.listEquals(['a', 'b'], listEach(map));
|
| - Expect.isTrue(map.containsKey('a'));
|
| - Expect.isFalse(map.containsKey('b'));
|
| - Expect.isTrue(map.containsValue('b'));
|
| - Expect.isFalse(map.containsValue('a'));
|
| -
|
| - testLookupNonExistingKeys(map);
|
| - testLookupNonExistingValues(map);
|
| - Expect.equals('b', map.remove('a'));
|
| - Expect.isNull(map.remove('b'));
|
| - testLookupNonExistingKeys(map);
|
| - testLookupNonExistingValues(map);
|
| -
|
| - map.clear();
|
| - testEmpty(map);
|
| -}
|
| -
|
| -void testLookupNonExistingKeys(Map map) {
|
| - for (String key in ['__proto__', 'null', null]) {
|
| - Expect.isNull(map[key]);
|
| - Expect.isFalse(map.containsKey(key));
|
| - }
|
| -}
|
| -
|
| -void testLookupNonExistingValues(Map map) {
|
| - for (var value in ['__proto__', 'null', null]) {
|
| - Expect.isFalse(map.containsValue(value));
|
| - }
|
| -}
|
| -
|
| -void testOrder(List list) {
|
| - if (list.isEmpty)
|
| - return;
|
| - else
|
| - testOrder(list.skip(1).toList());
|
| -
|
| - Map original = {};
|
| - for (int i = 0; i < list.length; i++) {
|
| - original[list[i]] = i;
|
| - }
|
| -
|
| - Map map = jsonify(original);
|
| - Expect.equals(list.length, map.length);
|
| - Expect.listEquals(list, map.keys.toList());
|
| -
|
| - for (int i = 0; i < 10; i++) {
|
| - map["$i"] = i;
|
| - Expect.equals(list.length + i + 1, map.length);
|
| - Expect.listEquals(list, map.keys.take(list.length).toList());
|
| - }
|
| -}
|
| -
|
| -void testProto() {
|
| - Map map = jsonify({'__proto__': 0});
|
| - Expect.equals(1, map.length);
|
| - Expect.isTrue(map.containsKey('__proto__'));
|
| - Expect.listEquals(['__proto__'], map.keys.toList());
|
| - Expect.equals(0, map['__proto__']);
|
| - Expect.equals(0, map.remove('__proto__'));
|
| - testEmpty(map);
|
| -
|
| - map = jsonify({'__proto__': null});
|
| - Expect.equals(1, map.length);
|
| - Expect.isTrue(map.containsKey('__proto__'));
|
| - Expect.listEquals(['__proto__'], map.keys.toList());
|
| - Expect.isNull(map['__proto__']);
|
| - Expect.isNull(map.remove('__proto__'));
|
| - testEmpty(map);
|
| -}
|
| -
|
| -void testToString() {
|
| - Expect.equals("{}", jsonify({}).toString());
|
| - Expect.equals("{a: 0}", jsonify({'a': 0}).toString());
|
| -}
|
| -
|
| -void testConcurrentModifications() {
|
| - void testIterate(Map map, Iterable iterable, Function f) {
|
| - Iterator iterator = iterable.iterator;
|
| - f(map);
|
| - iterator.moveNext();
|
| - }
|
| -
|
| - void testKeys(Map map, Function f) => testIterate(map, map.keys, f);
|
| - void testValues(Map map, Function f) => testIterate(map, map.values, f);
|
| -
|
| - void testForEach(Map map, Function f) {
|
| - map.forEach((key, value) {
|
| - f(map);
|
| - });
|
| - }
|
| -
|
| - bool throwsCME(Function f) {
|
| - try {
|
| - f();
|
| - } on ConcurrentModificationError catch (e) {
|
| - return true;
|
| - } catch (e) {
|
| - return false;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - Map map = {};
|
| - Expect.isTrue(throwsCME(() => testKeys(jsonify(map), (map) => map['a'] = 0)));
|
| - Expect
|
| - .isTrue(throwsCME(() => testValues(jsonify(map), (map) => map['a'] = 0)));
|
| - Expect.isFalse(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map['a'] = 0)));
|
| -
|
| - Expect.isFalse(throwsCME(() => testKeys(jsonify(map), (map) => map.clear())));
|
| - Expect
|
| - .isFalse(throwsCME(() => testValues(jsonify(map), (map) => map.clear())));
|
| - Expect.isFalse(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map.clear())));
|
| -
|
| - Expect.isFalse(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.remove('a'))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.remove('a'))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map.remove('a'))));
|
| -
|
| - Expect.isTrue(throwsCME(
|
| - () => testKeys(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
|
| - Expect.isTrue(throwsCME(
|
| - () => testValues(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
|
| - Expect.isFalse(throwsCME(
|
| - () => testForEach(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
|
| -
|
| - Expect.isFalse(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({}))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.addAll({}))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map.addAll({}))));
|
| -
|
| - Expect.isTrue(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({'a': 0}))));
|
| - Expect.isTrue(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.addAll({'a': 0}))));
|
| - Expect.isFalse(throwsCME(
|
| - () => testForEach(jsonify(map), (map) => map.addAll({'a': 0}))));
|
| -
|
| - map = {'a': 1};
|
| - Expect
|
| - .isFalse(throwsCME(() => testKeys(jsonify(map), (map) => map['a'] = 0)));
|
| - Expect.isFalse(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map['a'] = 0)));
|
| - Expect.isFalse(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map['a'] = 0)));
|
| -
|
| - Expect.isTrue(throwsCME(() => testKeys(jsonify(map), (map) => map['b'] = 0)));
|
| - Expect
|
| - .isTrue(throwsCME(() => testValues(jsonify(map), (map) => map['b'] = 0)));
|
| - Expect.isTrue(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map['b'] = 0)));
|
| -
|
| - Expect.isTrue(throwsCME(() => testKeys(jsonify(map), (map) => map.clear())));
|
| - Expect
|
| - .isTrue(throwsCME(() => testValues(jsonify(map), (map) => map.clear())));
|
| - Expect
|
| - .isTrue(throwsCME(() => testForEach(jsonify(map), (map) => map.clear())));
|
| -
|
| - Expect.isTrue(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.remove('a'))));
|
| - Expect.isTrue(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.remove('a'))));
|
| - Expect.isTrue(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map.remove('a'))));
|
| -
|
| - Expect.isFalse(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.remove('b'))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.remove('b'))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map.remove('b'))));
|
| -
|
| - Expect.isFalse(throwsCME(
|
| - () => testKeys(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
|
| - Expect.isFalse(throwsCME(
|
| - () => testValues(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
|
| - Expect.isFalse(throwsCME(
|
| - () => testForEach(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
|
| -
|
| - Expect.isTrue(throwsCME(
|
| - () => testKeys(jsonify(map), (map) => map.putIfAbsent('b', () => 0))));
|
| - Expect.isTrue(throwsCME(
|
| - () => testValues(jsonify(map), (map) => map.putIfAbsent('b', () => 0))));
|
| - Expect.isTrue(throwsCME(
|
| - () => testForEach(jsonify(map), (map) => map.putIfAbsent('b', () => 0))));
|
| -
|
| - Expect.isFalse(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({}))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.addAll({}))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testForEach(jsonify(map), (map) => map.addAll({}))));
|
| -
|
| - Expect.isFalse(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({'a': 0}))));
|
| - Expect.isFalse(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.addAll({'a': 0}))));
|
| - Expect.isFalse(throwsCME(
|
| - () => testForEach(jsonify(map), (map) => map.addAll({'a': 0}))));
|
| -
|
| - Expect.isTrue(
|
| - throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({'b': 0}))));
|
| - Expect.isTrue(
|
| - throwsCME(() => testValues(jsonify(map), (map) => map.addAll({'b': 0}))));
|
| - Expect.isTrue(throwsCME(
|
| - () => testForEach(jsonify(map), (map) => map.addAll({'b': 0}))));
|
| -}
|
| -
|
| -void testType() {
|
| - Expect.isTrue(jsonify({}) is Map);
|
| - Expect.isTrue(jsonify({}) is Map<String, dynamic>);
|
| - Expect.isFalse(jsonify({}) is Map<int, dynamic>);
|
| -}
|
| -
|
| -void testClear() {
|
| - Map map = jsonify({'a': 0});
|
| - map.clear();
|
| - Expect.equals(0, map.length);
|
| -}
|
| -
|
| -void testListEntry() {
|
| - Map map = jsonify({
|
| - 'a': [
|
| - 7,
|
| - 8,
|
| - {'b': 9}
|
| - ]
|
| - });
|
| - List list = map['a'];
|
| - Expect.equals(3, list.length);
|
| - Expect.equals(7, list[0]);
|
| - Expect.equals(8, list[1]);
|
| - Expect.equals(9, list[2]['b']);
|
| -}
|
| -
|
| -void testMutation() {
|
| - Map map = jsonify({'a': 0});
|
| - Expect.listEquals(['a', 0], listEach(map));
|
| - map['a'] = 1;
|
| - Expect.listEquals(['a', 1], listEach(map));
|
| - map['a']++;
|
| - Expect.listEquals(['a', 2], listEach(map));
|
| -}
|
|
|