public void Locator_KeysProperty_Contains_Expected_Keys() { using (new HideResourceFoldersScope()) { SetupLocatorAssets(); var locator = new AddressableAssetSettingsLocator(m_Settings); if (ExpectedKeys.Count != locator.Keys.Count()) { Debug.Log("GENERATED"); int i = 0; foreach (var k in locator.Keys) { Debug.Log($"[{i}] {k}"); i++; } Debug.Log("EXPECTED"); i = 0; foreach (var k in ExpectedKeys) { Debug.Log($"[{i}] {k}"); i++; } } var builtInPackageResourcesEntries = ResourcesTestUtility.GetResourcesEntries(m_Settings, true); foreach (var key in builtInPackageResourcesEntries) { ExpectedKeys.Add(key.guid); ExpectedKeys.Add(key.address); } Assert.AreEqual(ExpectedKeys.Count, locator.Keys.Count()); int index = 0; foreach (var k in locator.Keys) { Assert.IsTrue(ExpectedKeys.Contains(k), $"Cannot find key {k}, index={index} in expected keys"); index++; } } }
public IEnumerator Locator_KeysProperty_Contains_Expected_Keys_ForAllBuildScripts() { using (new HideResourceFoldersScope()) { SetupLocatorAssets(); AddressablesDataBuilderInput input = new AddressablesDataBuilderInput(m_Settings); input.Logger = new BuildLog(); var fastMode = ScriptableObject.CreateInstance <BuildScriptFastMode>(); var virtualMode = ScriptableObject.CreateInstance <BuildScriptVirtualMode>(); var packedMode = ScriptableObject.CreateInstance <BuildScriptPackedMode>(); var packedPlayMode = ScriptableObject.CreateInstance <BuildScriptPackedPlayMode>(); AddressablesImpl fastModeImpl = new AddressablesImpl(new DefaultAllocationStrategy()); fastModeImpl.AddResourceLocator(new AddressableAssetSettingsLocator(m_Settings)); var fastModeSettingsPath = fastMode.BuildData <AddressableAssetBuildResult>(input).OutputPath; var virtualModeSettingsPath = virtualMode.BuildData <AddressableAssetBuildResult>(input).OutputPath; var packedModeSettingsPath = packedMode.BuildData <AddressableAssetBuildResult>(input).OutputPath; var packedPlayModeSettingsPath = packedPlayMode.BuildData <AddressableAssetBuildResult>(input).OutputPath; AddressablesImpl fmImpl = new AddressablesImpl(new DefaultAllocationStrategy()); AddressablesImpl virtualImpl = new AddressablesImpl(new DefaultAllocationStrategy()); AddressablesImpl packedImpl = new AddressablesImpl(new DefaultAllocationStrategy()); AddressablesImpl packedPlayImpl = new AddressablesImpl(new DefaultAllocationStrategy()); fmImpl.AddResourceLocator(new AddressableAssetSettingsLocator(m_Settings)); virtualImpl.AddResourceLocator(new AddressableAssetSettingsLocator(m_Settings)); packedImpl.AddResourceLocator(new AddressableAssetSettingsLocator(m_Settings)); packedPlayImpl.AddResourceLocator(new AddressableAssetSettingsLocator(m_Settings)); var fastModeHandle = fmImpl.ResourceManager.StartOperation(new FastModeInitializationOperation(fmImpl, m_Settings), default(AsyncOperationHandle)); var virtualHandle = virtualImpl.InitializeAsync(virtualModeSettingsPath); var packedHandle = packedImpl.InitializeAsync(packedModeSettingsPath); var packedPlayHandle = packedPlayImpl.InitializeAsync(packedPlayModeSettingsPath); while (!fastModeHandle.IsDone && !virtualHandle.IsDone && !packedHandle.IsDone && !packedPlayHandle.IsDone) { yield return(null); } var fastModeKeys = fmImpl.ResourceLocators.First(l => l.GetType() == typeof(AddressableAssetSettingsLocator)).Keys; var virtualModeKeys = virtualImpl.ResourceLocators.First(l => l.GetType() == typeof(AddressableAssetSettingsLocator)).Keys; var packedModeKeys = packedImpl.ResourceLocators.First(l => l.GetType() == typeof(AddressableAssetSettingsLocator)).Keys; var packedPlayKeys = packedPlayImpl.ResourceLocators.First(l => l.GetType() == typeof(AddressableAssetSettingsLocator)).Keys; var builtInPackageResourcesEntries = ResourcesTestUtility.GetResourcesEntries(m_Settings, true); foreach (var key in builtInPackageResourcesEntries) { ExpectedKeys.Add(key.guid); ExpectedKeys.Add(key.address); } //Get our baseline Assert.AreEqual(ExpectedKeys.Count, fastModeKeys.Count()); foreach (var key in fastModeKeys) { Assert.IsTrue(ExpectedKeys.Contains(key)); } //Transitive property to check other build scripts CollectionAssert.AreEqual(fastModeKeys, virtualModeKeys); CollectionAssert.AreEqual(fastModeKeys, packedPlayKeys); CollectionAssert.AreEqual(fastModeKeys, packedModeKeys); } }