| // Copyright (c) 2012, 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 fuzz_support; | 
 |  | 
 | import 'package:expect/expect.dart'; | 
 | import 'dart:async'; | 
 | import 'dart:io'; | 
 |  | 
 | const typeMapping = const { | 
 |   'null': null, | 
 |   'int': 0, | 
 |   'int64': -9000000000000000000, | 
 |   'String': 'a', | 
 |   'FileMode': FileMode.read, | 
 |   'num': 0.50, | 
 |   'List<int>': const [1, 2, 3], | 
 |   'Map<String, int>': const {"a": 23} | 
 | }; | 
 |  | 
 | typePermutations(int argCount) { | 
 |   var result = []; | 
 |   if (argCount == 2) { | 
 |     typeMapping.forEach((k, v) { | 
 |       typeMapping.forEach((k2, v2) { | 
 |         result.add([v, v2]); | 
 |       }); | 
 |     }); | 
 |   } else { | 
 |     Expect.isTrue(argCount == 3); | 
 |     typeMapping.forEach((k, v) { | 
 |       typeMapping.forEach((k2, v2) { | 
 |         typeMapping.forEach((k3, v3) { | 
 |           result.add([v, v2, v3]); | 
 |         }); | 
 |       }); | 
 |     }); | 
 |   } | 
 |   return result; | 
 | } | 
 |  | 
 | // Perform sync operation and ignore all exceptions. | 
 | doItSync(Function f) { | 
 |   try { | 
 |     f(); | 
 |   } catch (e) {} | 
 | } | 
 |  | 
 | // Perform async operation and transform the future for the operation | 
 | // into a future that never fails by treating errors as normal | 
 | // completion. | 
 | Future doItAsync(FutureOr f()) { | 
 |   // Ignore value and errors. | 
 |   return new Future.delayed(Duration.zero, f) | 
 |       .catchError((_) {}) | 
 |       .then((_) => true); | 
 | } |