// 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.

import 'dart:mirrors';

import 'async_helper.dart';

void test(void onDone(bool success)) {
  var now = new Date.now();
  InstanceMirror mirror = reflect(now);
  print('now: ${now}');
  print('mirror.type: ${mirror.type}');
  print('now.toUtc(): ${now.toUtc()}');

  mirror.invoke("toUtc", []).then((value) {
    print('mirror.invoke("toUtc", []): $value');
    Expect.isTrue(value.hasReflectee);
    Expect.equals(now.toUtc(), value.reflectee);
    onDone(true);
  });
}

void main() {
  reflect("""

This program is using an experimental feature called \"mirrors\".  As
currently implemented, mirrors do not work with minification, and will
cause spurious errors depending on how code was optimized.

The authors of this program are aware of these problems and have
decided the thrill of using an experimental feature is outweighing the
risks.  Furthermore, the authors of this program understand that
long-term, to fix the problems mentioned above, mirrors may have
negative impact on size and performance of Dart programs compiled to
JavaScript.
""");
  asyncTest(test);
}
