TestApp.cs 1009 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Threading.Tasks;
  3. namespace Urho.Tests.Bootstrap
  4. {
  5. public static class TestApp
  6. {
  7. public static void RunSimpleApp(Func<SimpleTestApplication, Task> onStartHandler, ApplicationOptions options = null)
  8. {
  9. var app = new SimpleTestApplication(options, onStartHandler);
  10. app.Run();
  11. if (app.LastException != null)
  12. throw app.LastException;
  13. }
  14. }
  15. public class SimpleTestApplication : SimpleApplication
  16. {
  17. public Exception LastException { get; private set; }
  18. readonly Func<SimpleTestApplication, Task> onStartHandler;
  19. public SimpleTestApplication(ApplicationOptions options,
  20. Func<SimpleTestApplication, Task> onStartHandler) : base(options)
  21. {
  22. this.onStartHandler = onStartHandler;
  23. UnhandledException += (sender, args) => LastException = args.Exception;
  24. }
  25. protected override async void Start()
  26. {
  27. base.Start();
  28. try
  29. {
  30. await onStartHandler(this);
  31. }
  32. catch (Exception e)
  33. {
  34. await Exit();
  35. LastException = e;
  36. }
  37. }
  38. }
  39. }