module throw_exception_runme;

import throw_exception.Foo;

void main() {
  test!("test_int");
  test!("test_msg");
  test!("test_cls");
  test!("test_cls_ptr");
  test!("test_cls_ref");
  test!("test_cls_td");
  test!("test_cls_ptr_td");
  test!("test_cls_ref_td");
  test!("test_array");
  test!("test_enum");
}

void test(string methodName)() {
  auto foo = new Foo();

  bool didntThrow;
  try {
    mixin("foo." ~ methodName ~ "();");
    didntThrow = true;
  } catch (Exception) {}

  if (didntThrow) {
    throw new Exception(methodName ~ " failed");
  }
}
