// 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. library test.invoke_throws_test; import 'dart:mirrors'; import 'package:expect/expect.dart'; class MyException {} class Class { Class.noException(); Class.generative() { throw new MyException(); } Class.redirecting() : this.generative(); factory Class.faktory() { throw new MyException(); } factory Class.redirectingFactory() = Class.faktory; get getter { throw new MyException(); } set setter(v) { throw new MyException(); } method() { throw new MyException(); } noSuchMethod(invocation) { throw new MyException(); } static get staticGetter { throw new MyException(); } static set staticSetter(v) { throw new MyException(); } static staticFunction() { throw new MyException(); } } get libraryGetter { throw new MyException(); } set librarySetter(v) { throw new MyException(); } libraryFunction() { throw new MyException(); } bool isMyException(e) => e is MyException; main() { InstanceMirror im = reflect(new Class.noException()); Expect.throws(() => im.getField(#getter), isMyException); Expect.throws(() => im.setField(#setter, ['arg']), isMyException); Expect.throws(() => im.invoke(#method, []), isMyException); Expect.throws(() => im.invoke(#triggerNoSuchMethod, []), isMyException); ClassMirror cm = reflectClass(Class); Expect.throws(() => cm.getField(#staticGetter), isMyException); Expect.throws(() => cm.setField(#staticSetter, ['arg']), isMyException); Expect.throws(() => cm.invoke(#staticFunction, []), isMyException); Expect.throws(() => cm.newInstance(#generative, []), isMyException); Expect.throws(() => cm.newInstance(#redirecting, []), isMyException); Expect.throws(() => cm.newInstance(#faktory, []), isMyException); Expect.throws(() => cm.newInstance(#redirectingFactory, []), isMyException); LibraryMirror lm = reflectClass(Class).owner as LibraryMirror; Expect.throws(() => lm.getField(#libraryGetter), isMyException); Expect.throws(() => lm.setField(#librarySetter, ['arg']), isMyException); Expect.throws(() => lm.invoke(#libraryFunction, []), isMyException); }