// Copyright (c) 2014, 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 test.reflected_type_helper;

@MirrorsUsed(targets: "test.reflected_type_helper")
import 'dart:mirrors';
import 'package:expect/expect.dart';

expectReflectedType(TypeMirror typeMirror, Type expectedType) {
  if (expectedType == null) {
    Expect.isFalse(typeMirror.hasReflectedType);
    Expect.throws(() => typeMirror.reflectedType,
                  (e) => e is UnsupportedError,
                  "Should not have a reflected type");
  } else {
    Expect.isTrue(typeMirror.hasReflectedType);
    Expect.equals(expectedType, typeMirror.reflectedType);
  }
}
