123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine.Rendering;
-
- namespace UnityEditor.TestTools.TestRunner
- {
- internal class TestSettings : ITestSettings
- {
- private readonly TestSetting[] m_Settings =
- {
- new TestSetting<ScriptingImplementation?>(
- settings => settings.scriptingBackend,
- () => PlayerSettings.GetScriptingBackend(EditorUserBuildSettings.activeBuildTargetGroup),
- implementation => PlayerSettings.SetScriptingBackend(EditorUserBuildSettings.activeBuildTargetGroup, implementation.Value)),
- new TestSetting<string>(
- settings => settings.Architecture,
- () => EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android ? PlayerSettings.Android.targetArchitectures.ToString() : null,
- architecture =>
- {
- if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
- {
- if (!string.IsNullOrEmpty(architecture))
- {
- var targetArchitectures = (AndroidArchitecture)Enum.Parse(typeof(AndroidArchitecture), architecture, true);
- PlayerSettings.Android.targetArchitectures = targetArchitectures;
- }
- }
- }),
- new TestSetting<ApiCompatibilityLevel?>(
- settings => settings.apiProfile,
- () => PlayerSettings.GetApiCompatibilityLevel(EditorUserBuildSettings.activeBuildTargetGroup),
- implementation =>
- {
- if (Enum.IsDefined(typeof(ApiCompatibilityLevel), implementation.Value))
- {
- PlayerSettings.SetApiCompatibilityLevel(EditorUserBuildSettings.activeBuildTargetGroup,
- implementation.Value);
- }
- }),
- new TestSetting<bool?>(
- settings => settings.appleEnableAutomaticSigning,
- () => PlayerSettings.iOS.appleEnableAutomaticSigning,
- enableAutomaticSigning =>
- {
- if (enableAutomaticSigning != null)
- PlayerSettings.iOS.appleEnableAutomaticSigning = enableAutomaticSigning.Value;
- }),
- new TestSetting<string>(
- settings => settings.appleDeveloperTeamID,
- () => PlayerSettings.iOS.appleDeveloperTeamID,
- developerTeam =>
- {
- if (developerTeam != null)
- PlayerSettings.iOS.appleDeveloperTeamID = developerTeam;
- }),
- new TestSetting<ProvisioningProfileType?>(
- settings => settings.iOSManualProvisioningProfileType,
- () => PlayerSettings.iOS.iOSManualProvisioningProfileType,
- profileType =>
- {
- if (profileType != null)
- PlayerSettings.iOS.iOSManualProvisioningProfileType = profileType.Value;
- }),
- new TestSetting<string>(
- settings => settings.iOSManualProvisioningProfileID,
- () => PlayerSettings.iOS.iOSManualProvisioningProfileID,
- provisioningUUID =>
- {
- if (provisioningUUID != null)
- PlayerSettings.iOS.iOSManualProvisioningProfileID = provisioningUUID;
- }),
- new TestSetting<ProvisioningProfileType?>(
- settings => settings.tvOSManualProvisioningProfileType,
- () => PlayerSettings.iOS.tvOSManualProvisioningProfileType,
- profileType =>
- {
- if (profileType != null)
- PlayerSettings.iOS.tvOSManualProvisioningProfileType = profileType.Value;
- }),
- new TestSetting<string>(
- settings => settings.tvOSManualProvisioningProfileID,
- () => PlayerSettings.iOS.tvOSManualProvisioningProfileID,
- provisioningUUID =>
- {
- if (provisioningUUID != null)
- PlayerSettings.iOS.tvOSManualProvisioningProfileID = provisioningUUID;
- }),
- new TestSetting<bool>(
- settings => settings.autoGraphicsAPIs,
- () => PlayerSettings.GetUseDefaultGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget),
- autoGraphicsAPIs =>
- {
- PlayerSettings.SetUseDefaultGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget, autoGraphicsAPIs);
- }),
- new TestSetting<string[]>(
- settings => settings.playerGraphicsAPIs,
- () => PlayerSettings.GetGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget).Select(api => api.ToString()).ToArray(),
- playerGraphicsAPIs =>
- {
- if (playerGraphicsAPIs != null && playerGraphicsAPIs.Length > 0)
- {
- var graphicsAPIs = new List<GraphicsDeviceType>();
- foreach (var graphicsAPI in playerGraphicsAPIs)
- {
- if (GraphicsDeviceType.TryParse(graphicsAPI, true, out GraphicsDeviceType playerGraphicsAPI))
- graphicsAPIs.Add(playerGraphicsAPI);
- }
-
- if (graphicsAPIs.Count > 0)
- PlayerSettings.SetGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget, graphicsAPIs.ToArray());
- }
- }),
- };
-
- private bool m_Disposed;
-
- public ScriptingImplementation? scriptingBackend { get; set; }
-
- public string Architecture { get; set; }
-
- public ApiCompatibilityLevel? apiProfile { get; set; }
-
- public bool? appleEnableAutomaticSigning { get; set; }
- public string appleDeveloperTeamID { get; set; }
- public ProvisioningProfileType? iOSManualProvisioningProfileType { get; set; }
- public string iOSManualProvisioningProfileID { get; set; }
- public ProvisioningProfileType? tvOSManualProvisioningProfileType { get; set; }
- public string tvOSManualProvisioningProfileID { get; set; }
- public string[] playerGraphicsAPIs { get; set; }
- public bool autoGraphicsAPIs { get; set; }
-
- public void Dispose()
- {
- if (!m_Disposed)
- {
- foreach (var testSetting in m_Settings)
- {
- testSetting.Cleanup();
- }
-
- m_Disposed = true;
- }
- }
-
- public void SetupProjectParameters()
- {
- foreach (var testSetting in m_Settings)
- {
- testSetting.Setup(this);
- }
- }
-
- private abstract class TestSetting
- {
- public abstract void Setup(TestSettings settings);
- public abstract void Cleanup();
- }
-
- private class TestSetting<T> : TestSetting
- {
- private T m_ValueBeforeSetup;
- private Func<TestSettings, T> m_GetFromSettings;
- private Func<T> m_GetCurrentValue;
- private Action<T> m_SetValue;
-
- public TestSetting(Func<TestSettings, T> getFromSettings, Func<T> getCurrentValue, Action<T> setValue)
- {
- m_GetFromSettings = getFromSettings;
- m_GetCurrentValue = getCurrentValue;
- m_SetValue = setValue;
- }
-
- public override void Setup(TestSettings settings)
- {
- m_ValueBeforeSetup = m_GetCurrentValue();
- var newValue = m_GetFromSettings(settings);
- if (newValue != null)
- {
- m_SetValue(newValue);
- }
- }
-
- public override void Cleanup()
- {
- m_SetValue(m_ValueBeforeSetup);
- }
- }
- }
- }
|