ExecutionSettings.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Linq;
  3. using NUnit.Framework.Interfaces;
  4. using NUnit.Framework.Internal.Filters;
  5. using UnityEngine;
  6. namespace UnityEditor.TestTools.TestRunner.Api
  7. {
  8. [Serializable]
  9. public class ExecutionSettings
  10. {
  11. public ExecutionSettings(params Filter[] filtersToExecute)
  12. {
  13. filters = filtersToExecute;
  14. }
  15. [SerializeField]
  16. internal BuildTarget? targetPlatform;
  17. // Note: Is not available after serialization
  18. public ITestRunSettings overloadTestRunSettings;
  19. [SerializeField]
  20. internal Filter filter;
  21. [SerializeField]
  22. public Filter[] filters;
  23. [SerializeField]
  24. public bool runSynchronously;
  25. [SerializeField]
  26. public int playerHeartbeatTimeout = 60*10;
  27. internal bool EditModeIncluded()
  28. {
  29. return filters.Any(f => IncludesTestMode(f.testMode, TestMode.EditMode));
  30. }
  31. internal bool PlayModeInEditorIncluded()
  32. {
  33. return filters.Any(f => IncludesTestMode(f.testMode, TestMode.PlayMode) && targetPlatform == null);
  34. }
  35. internal bool PlayerIncluded()
  36. {
  37. return filters.Any(f => IncludesTestMode(f.testMode, TestMode.PlayMode) && targetPlatform != null);
  38. }
  39. private static bool IncludesTestMode(TestMode testMode, TestMode modeToCheckFor)
  40. {
  41. return (testMode & modeToCheckFor) == modeToCheckFor;
  42. }
  43. internal ITestFilter BuildNUnitFilter()
  44. {
  45. return new OrFilter(filters.Select(f => f.BuildNUnitFilter(runSynchronously)).ToArray());
  46. }
  47. }
  48. }