PresetManagerに登録してあるPresetがちゃんと反映されているか確かめるテスト
全てのPresetが正しく適応されている.cs
[Test]
public void 全てのPresetが正しく適応されている()
{
var defaultPresets = Preset.GetAllDefaultTypes().SelectMany(x => Preset.GetDefaultPresetsForType(x)).Where(x => x.enabled);
foreach (var defaultPreset in defaultPresets)
{
var targets = AssetDatabase.FindAssets(defaultPreset.filter)
.Select(x => AssetDatabase.GUIDToAssetPath(x))
.Select(x => AssetImporter.GetAtPath(x))
.Where(x => defaultPreset.preset.CanBeAppliedTo(x))
.ToArray();
foreach (var target in targets)
{
var tempObject = Object.Instantiate(target);
Disposable.Create(() => Object.DestroyImmediate(tempObject));
defaultPreset.preset.ApplyTo(tempObject);
var originalSerializedObject = new SerializedObject(target);
var tempSerializedObject = new SerializedObject(tempObject);
var iterator = originalSerializedObject.GetIterator();
while (iterator.NextVisible(true))
{
if (iterator.propertyType == SerializedPropertyType.Generic) continue;
var tempProperty = tempSerializedObject.FindProperty(iterator.propertyPath);
if (!SerializedProperty.DataEquals(iterator, tempProperty))
{
Assert.Fail($"{target.assetPath}");
}
}
}
}