概要
using System.Linq;
using NUnit.Framework;
using UnityEditor.AddressableAssets;
using UnityEditor.AddressableAssets.Settings;
public sealed class Addressables用テスト
{
private sealed class DuplicateGroupResult
{
private readonly string m_groupName;
private readonly string m_groupGuid;
public DuplicateGroupResult( IGrouping<string, AddressableAssetGroup> duplicate )
{
m_groupName = duplicate.First().Name;
m_groupGuid = duplicate.Key;
}
public override string ToString()
{
return $"{m_groupName},{m_groupGuid}";
}
}
[Test]
public void AddressableAssetSettingsに登録されているグループが重複していないか()
{
var settings = AddressableAssetSettingsDefaultObject.Settings;
if ( settings == null ) return;
var groups = settings.groups;
var duplicates = groups
.Where( x => !x.Name.Contains( "Built In Data" ) )
.GroupBy( x => x.Guid )
.Where( x => 1 < x.Count() )
.Select( x => new DuplicateGroupResult( x ) )
.ToArray()
;
if ( duplicates.Length <= 0 ) return;
Assert.Fail
(
$@"AddressableAssetSettings に重複して登録されているグループが存在します
--------------------------------------------------------------------------------
{string.Join( "\n", duplicates.Select( x => x.ToString() ) )}
--------------------------------------------------------------------------------"
);
}
}
- AddressableAssetSettings.asset がコンフリクトして解消した時に誤って m_GroupAssets に同 guid のアセットが複数登録されてしまったりすると、ビルド時にエラーが発生するため、事前に確認するためのテストコード