| // Copyright (c) 2013, 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 Object decode(String str, {reviver(key, value)}) |
| * The optional reviver function is called once for each object or list property |
| * that has been parsed during decoding. |
| * The key argument is either the integer list index for a list property, |
| * the map string for object properties, or null for the final result. |
| * The default reviver (when not provided) is the identity function. |
| * @description Checks that reviver function, if provided, is called at least |
| * once for each object or list property parsed. |
| * @author kaigorodov |
| */ |
| import "dart:convert"; |
| import "../../../Utils/expect.dart"; |
| import "../JsonDecoder/table1.lib.dart" show table; |
| |
| int count = 0; |
| |
| Object? reviver(key, value) { |
| ++count; |
| return value; |
| } |
| |
| main() { |
| for (List<Object?> pair in table) { |
| Object? jsonObject = pair[0]; |
| String jsonString = pair[1] as String; |
| Object? res = new JsonCodec().decode(jsonString, reviver: reviver); |
| Expect.deepEquals(jsonObject, res); |
| Expect.isTrue(count > 0); |
| count = 0; |
| } |
| } |