123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- using NUnit.Framework;
- using System;
- using System.Collections;
- using System.IO;
- using System.Linq;
- using System.Text.RegularExpressions;
- using UnityEngine;
- using UnityEngine.TestTools;
- using UnityEngine.XR.Management;
- using UnityEditor.XR.Management.Metadata;
- using Unity.XR.Management.TestPackage;
- using Unity.XR.Management.TestPackage.Editor;
- namespace UnityEditor.XR.Management.Tests
- {
- class PackageManagementTests
- {
- internal static readonly string[] s_TempSettingsPath = { "Temp", "Test" };
- XRGeneralSettingsPerBuildTarget m_TestSettingsPerBuildTarget = null;
- XRGeneralSettings m_TestSettings = null;
- XRManagerSettings m_Settings = null;
- [SetUp]
- public void SetUp()
- {
- AssetDatabase.DeleteAsset("Assets/XR");
- AssetDatabase.CreateFolder("Assets", "XR");
- m_Settings = ScriptableObject.CreateInstance<XRManagerSettings>() as XRManagerSettings;
- m_Settings.name = "Actual testable settings.";
- m_TestSettings = ScriptableObject.CreateInstance<XRGeneralSettings>() as XRGeneralSettings;
- m_TestSettings.Manager = m_Settings;
- m_TestSettings.name = "Standalone Settings Container.";
- m_TestSettingsPerBuildTarget = ScriptableObject.CreateInstance<XRGeneralSettingsPerBuildTarget>() as XRGeneralSettingsPerBuildTarget;
- m_TestSettingsPerBuildTarget.SetSettingsForBuildTarget(BuildTargetGroup.Standalone, m_TestSettings);
- var testPath = XRGeneralSettingsTests.GetAssetPathForComponents(s_TempSettingsPath);
- if (!string.IsNullOrEmpty(testPath))
- {
- AssetDatabase.CreateAsset(m_TestSettingsPerBuildTarget, Path.Combine(testPath, "Test_XRGeneralSettings.asset"));
- AssetDatabase.AddObjectToAsset(m_TestSettings, AssetDatabase.GetAssetOrScenePath(m_TestSettingsPerBuildTarget));
- AssetDatabase.CreateFolder(testPath, "Settings");
- testPath = Path.Combine(testPath, "Settings");
- AssetDatabase.CreateAsset(m_Settings, Path.Combine(testPath, "Test_XRSettingsManager.asset"));
- m_TestSettings.AssignedSettings = m_Settings;
- AssetDatabase.SaveAssets();
- }
- EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, m_TestSettingsPerBuildTarget, true);
- XRPackageInitializationBootstrap.BeginPackageInitialization();
- TestPackage pkg = new TestPackage();
- XRPackageMetadataStore.AddPluginPackage(pkg);
- XRPackageInitializationBootstrap.InitPackage(pkg);
- TestLoaderBase.WasAssigned = false;
- TestLoaderBase.WasUnassigned = false;
- }
- [TearDown]
- public void Teardown()
- {
- AssetDatabase.DeleteAsset("Assets/Temp");
- AssetDatabase.DeleteAsset("Assets/XR");
- }
- private string LoaderTypeNameForBuildTarget(BuildTargetGroup buildTargetGroup)
- {
- var loaders = XRPackageMetadataStore.GetLoadersForBuildTarget(buildTargetGroup);
- var filteredLoaders = from l in loaders where String.Compare(l.loaderType, typeof(TestLoaderOne).FullName) == 0 select l;
- if (filteredLoaders.Any())
- {
- var loaderInfo = filteredLoaders.First();
- return loaderInfo.loaderType;
- }
- return "";
- }
- private bool AssignLoaderToSettings(XRManagerSettings settings, string loaderTypeName, BuildTargetGroup buildTargetGroup = BuildTargetGroup.Standalone)
- {
- if (String.IsNullOrEmpty(loaderTypeName))
- return false;
- return XRPackageMetadataStore.AssignLoader(m_Settings, loaderTypeName, buildTargetGroup);
- }
- private bool SettingsHasLoaderOfType(XRManagerSettings settings, string loaderTypeName)
- {
- bool wasFound = false;
- foreach (var l in m_Settings.loaders)
- {
- if (String.Compare(l.GetType().FullName, loaderTypeName) == 0)
- wasFound = true;
- }
- return wasFound;
- }
- [UnityTest]
- public IEnumerator TestLoaderAssignment()
- {
- Assert.IsNotNull(m_Settings);
- string loaderTypeName = LoaderTypeNameForBuildTarget(BuildTargetGroup.Standalone);
- Assert.IsFalse(String.IsNullOrEmpty(loaderTypeName));
- bool wasFound = false;
- foreach (var l in m_Settings.loaders)
- {
- if (String.Compare(l.GetType().FullName, loaderTypeName) == 0)
- wasFound = true;
- }
- Assert.IsFalse(wasFound);
- Assert.IsTrue(XRPackageMetadataStore.AssignLoader(m_Settings, loaderTypeName, BuildTargetGroup.Standalone));
- yield return null;
- Assert.IsTrue(SettingsHasLoaderOfType(m_Settings, loaderTypeName));
- Assert.IsTrue(TestLoaderBase.WasAssigned);
- }
- [Test]
- public void TestLoaderAssignmentSerializes()
- {
- Assert.IsNotNull(m_Settings);
- string loaderTypeName = LoaderTypeNameForBuildTarget(BuildTargetGroup.Standalone);
- Assert.IsFalse(String.IsNullOrEmpty(loaderTypeName));
- AssignLoaderToSettings(m_Settings, loaderTypeName);
- Assert.IsTrue(SettingsHasLoaderOfType(m_Settings, loaderTypeName));
- m_Settings = null;
- var settings = EditorUtilities.GetInstanceOfTypeFromAssetDatabase<XRManagerSettings>();
- m_Settings = settings as XRManagerSettings;
- Assert.IsNotNull(m_Settings);
- Assert.IsTrue(SettingsHasLoaderOfType(m_Settings, loaderTypeName));
- Assert.IsTrue(TestLoaderBase.WasAssigned);
- }
- [Test]
- public void TestLoaderRemoval()
- {
- Assert.IsNotNull(m_Settings);
- string loaderTypeName = LoaderTypeNameForBuildTarget(BuildTargetGroup.Standalone);
- Assert.IsFalse(String.IsNullOrEmpty(loaderTypeName));
- AssignLoaderToSettings(m_Settings, loaderTypeName);
- Assert.IsTrue(SettingsHasLoaderOfType(m_Settings, loaderTypeName));
- Assert.IsTrue(XRPackageMetadataStore.RemoveLoader(m_Settings, loaderTypeName, BuildTargetGroup.Standalone));
- m_Settings = null;
- var settings = EditorUtilities.GetInstanceOfTypeFromAssetDatabase<XRManagerSettings>();
- m_Settings = settings as XRManagerSettings;
- Assert.IsNotNull(m_Settings);
- Assert.IsFalse(SettingsHasLoaderOfType(m_Settings, loaderTypeName));
- Assert.IsTrue(TestLoaderBase.WasUnassigned);
- }
- [UnityTest]
- public IEnumerator TestInvalidPackageErrorsOut()
- {
- #if !UNITY_2020_2_OR_NEWER
- XRPackageMetadataStore.InstallPackageAndAssignLoaderForBuildTarget("com.unity.invalid.package.id", String.Empty, BuildTargetGroup.Standalone);
- LogAssert.Expect(LogType.Error, new Regex(@"cannot be found"));
- while (XRPackageMetadataStore.isDoingQueueProcessing)
- {
- yield return null;
- }
- #else
- yield return null;
- #endif //UNITY_2020_2_OR_NEWER
- }
- [UnityTest]
- public IEnumerator TestNoPackageIdErrorsOut()
- {
- #if !UNITY_2020_2_OR_NEWER
- XRPackageMetadataStore.InstallPackageAndAssignLoaderForBuildTarget("", String.Empty, BuildTargetGroup.Standalone);
- LogAssert.Expect(LogType.Error, new Regex(@"no package id"));
- while (XRPackageMetadataStore.isDoingQueueProcessing)
- {
- yield return null;
- }
- #else
- yield return null;
- #endif //UNITY_2020_2_OR_NEWER
- }
- }
- }
|