UnityGame/Library/PackageCache/com.unity.render-pipelines.universal/Tests/Editor/PostProcessDataTests/PostProcessDataAnalyticsTests.cs
2024-10-27 10:53:47 +03:00

120 lines
5.0 KiB
C#

using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using UnityEngine.Pool;
using UnityEngine.Rendering.Universal;
using Assert = UnityEngine.Assertions.Assert;
namespace UnityEditor.Rendering.Universal
{
class PostProcessDataAnalyticsTests
{
private static PostProcessDataAnalytics.Analytic.PropertyToGUIDs[] s_Datas = new[]
{
new PostProcessDataAnalytics.Analytic.PropertyToGUIDs()
{
propertyName = "bloomPS",
defaultGUID = "5f1864addb451f54bae8c86d230f736e",
usedGUIDs = new List<string>()
{
"a176945d0e562084691bce8e11084c6a",
}
},
new PostProcessDataAnalytics.Analytic.PropertyToGUIDs()
{
propertyName = "bloomPS",
defaultGUID = "5f1864addb451f54bae8c86d230f736e",
usedGUIDs = new List<string>()
{
"a176945d0e562084691bce8e11084c6a",
"a176945d0e562084691bce8e11084c6a"
}
},
new PostProcessDataAnalytics.Analytic.PropertyToGUIDs()
{
propertyName = "bloomPS",
defaultGUID = "5f1864addb451f54bae8c86d230f736e",
usedGUIDs = new List<string>()
{
"ace59f7f124432f4f923bd3bfa93e0ad",
"a176945d0e562084691bce8e11084c6a"
}
}
};
private static IEnumerable<(string[], PostProcessDataAnalytics.Analytic.PropertyToGUIDs)> TestDataExtractData()
{
yield return (
new string[]
{
"Packages/com.unity.render-pipelines.universal/Tests/Editor/PostProcessDataTests/PostProcessData BloomPS Different.asset",
},
s_Datas[0]);
yield return (
new string[]
{
"Packages/com.unity.render-pipelines.universal/Tests/Editor/PostProcessDataTests/PostProcessData BloomPS Different.asset",
"Packages/com.unity.render-pipelines.universal/Tests/Editor/PostProcessDataTests/PostProcessData BloomPS Different.asset",
},
s_Datas[1]);
yield return (
new string[]
{
"Packages/com.unity.render-pipelines.universal/Tests/Editor/PostProcessDataTests/PostProcessData BloomPS Different 1.asset",
"Packages/com.unity.render-pipelines.universal/Tests/Editor/PostProcessDataTests/PostProcessData BloomPS Different.asset",
},
s_Datas[2]);
}
[Test][TestCaseSource(nameof(TestDataExtractData))]
public void DataIsExtractedCorrectly((string[] input, PostProcessDataAnalytics.Analytic.PropertyToGUIDs expected) testCase)
{
using (ListPool<PostProcessData>.Get(out var tmp))
{
foreach (var i in testCase.input)
{
var asset = AssetDatabase.LoadAssetAtPath<PostProcessData>(i);
Assert.IsNotNull(asset, $"Unable to load asset at {i}");
tmp.Add(asset);
}
var data = PostProcessDataAnalytics.Analytic.ExtractData(tmp);
var bloom = data.FirstOrDefault(d =>
d.propertyName.Equals(nameof(PostProcessData.ShaderResources.bloomPS)));
Assert.IsNotNull(bloom);
Assert.AreEqual(testCase.expected.propertyName, bloom.propertyName);
Assert.AreEqual(testCase.expected.defaultGUID, bloom.defaultGUID);
CollectionAssert.AreEqual(testCase.expected.usedGUIDs, bloom.usedGUIDs);
}
}
private static IEnumerable<(PostProcessDataAnalytics.Analytic.PropertyToGUIDs, PostProcessDataAnalytics.Analytic.Usage)> TestData()
{
yield return (s_Datas[0], PostProcessDataAnalytics.Analytic.Usage.ModifiedForTheProject);
yield return (s_Datas[1], PostProcessDataAnalytics.Analytic.Usage.ModifiedForTheProject);
yield return (s_Datas[2], PostProcessDataAnalytics.Analytic.Usage.ModifiedForEachQualityLevel);
}
[Test]
[TestCaseSource(nameof(TestData))]
public void GenerateMapWithDifferencesTests((PostProcessDataAnalytics.Analytic.PropertyToGUIDs input, PostProcessDataAnalytics.Analytic.Usage expected) testCase)
{
var dataToSent =
PostProcessDataAnalytics.Analytic.GatherDataToBeSent(new [] {testCase.input });
int count = 0;
foreach (PostProcessDataAnalytics.Analytic.AnalyticsData i in dataToSent)
{
if (i.property.Equals(nameof(PostProcessData.ShaderResources.bloomPS)))
Assert.AreEqual(i.usage, testCase.expected.ToString());
++count;
}
Assert.AreEqual(1, count);
}
}
}