WuhuIslandTesting/Library/PackageCache/com.unity.addressables@1.21.12/Tests/Editor/Diagnostics/EventDataSetTests.cs
2025-01-07 02:06:59 +01:00

186 lines
8.8 KiB
C#

using NUnit.Framework;
using UnityEditor.AddressableAssets.Diagnostics.Data;
using UnityEngine.ResourceManagement;
namespace UnityEditor.AddressableAssets.Tests.Diagnostics
{
public class EventDataSetTests
{
//Note, we use EventDataSetStream.GetValue for these tests so that we can avoid testing multiple
//EventDataSet methods in the same test
[Test]
public void EventDataSet_AddSample_AddsToCorrectStream()
{
EventDataSet testSet = new EventDataSet();
testSet.AddSample(2, 0, 2);
Assert.NotNull(testSet.m_Streams, "List of streams not properly initialized.");
Assert.AreEqual(true, testSet.m_Streams.Count > 0, "List of streams was initialized, but not assigned to.");
Assert.NotNull(testSet.m_Streams[2], "Stream 2 should not be null, as a sample should've been added to it.");
Assert.AreEqual(2, testSet.m_Streams[2].GetValue(0), "Value retrieved from stream was incorrect.");
}
[Test]
public void EventDataSet_AddSample_ProperlyCreatesNullStreams()
{
EventDataSet testSet = new EventDataSet();
testSet.AddSample(4, 0, 2);
Assert.NotNull(testSet.m_Streams, "List of streams not properly initialized.");
Assert.AreEqual(true, testSet.m_Streams.Count > 0, "List of streams was initialized, but not assigned to.");
Assert.IsNull(testSet.m_Streams[0], "0th stream was not null initialized like expected.");
Assert.IsNull(testSet.m_Streams[1], "1th stream was not null initialized like expected.");
Assert.IsNull(testSet.m_Streams[2], "2nd stream was not null initialized like expected.");
Assert.IsNull(testSet.m_Streams[3], "3rd stream was not null initialized like expected.");
Assert.NotNull(testSet.m_Streams[4], "4th stream was null initialized when it should have had a value added to it.");
Assert.AreEqual(2, testSet.m_Streams[4].GetValue(0), "Value retrieved from stream was incorrect.");
}
//this tests both HasChildren and AddChild
[Test]
public void EventDataSet_AddChild_SimpleAdd()
{
EventDataSet testSet = new EventDataSet();
EventDataSet childSet = new EventDataSet();
testSet.AddChild(childSet);
Assert.AreEqual(true, testSet.HasChildren, "hasChildren not properly updated.");
Assert.AreEqual(childSet.ObjectId, testSet.m_Children[childSet.ObjectId].ObjectId, "Child not successfully retrieved from dictionary. ");
}
[Test]
public void EventDataSet_AddChild_ConfirmChildObjectConsistentWithReference()
{
EventDataSet parentSet1 = new EventDataSet();
EventDataSet parentSet2 = new EventDataSet();
EventDataSet childSet = new EventDataSet();
parentSet1.AddChild(childSet);
parentSet2.AddChild(childSet);
childSet.DisplayName = "SameChild";
Assert.AreEqual("SameChild", parentSet1.m_Children[childSet.ObjectId].DisplayName, "Display name not changed in m_Children despite being changed on child EventDataSet itself.");
Assert.AreEqual("SameChild", parentSet2.m_Children[childSet.ObjectId].DisplayName, "Display name not changed in m_Children despite being changed on child EventDataSet itself.");
}
[Test]
public void EventDataSet_HasDataAfterFrame_ProperBehaviorOnNoChildCase()
{
EventDataSet parentSet = new EventDataSet();
parentSet.AddSample(0, 0, 1);
Assert.AreEqual(true, parentSet.HasDataAfterFrame(0), "Returned false despite the fact that the last frame of the stream should be nonzero.");
}
[Test]
public void EventDataSet_HasDataAfterFrame_ProperBehaviorOnChildHasStreamCase()
{
EventDataSet parentSet = new EventDataSet();
EventDataSet childSet = new EventDataSet();
childSet.AddSample(0, 0, 1);
Assert.AreEqual(false, parentSet.HasDataAfterFrame(0), "HasDataAfterFrame should always be false for a dataset with no streams and no children.");
Assert.AreEqual(true, childSet.HasDataAfterFrame(0), "HasDataAfterFrame should return true because the last sample of one of it's streams is nonzero.");
parentSet.AddChild(childSet);
Assert.AreEqual(true, parentSet.HasDataAfterFrame(0), "HasDataAfterFrame returned false even though a child EventDataSet has data past frame 0.");
}
[Test]
public void EventDataSet_HasDataAfterFrame_ProperBehaviorOnChildHasNoStreamCase()
{
EventDataSet parentSet = new EventDataSet();
EventDataSet childSet = new EventDataSet();
Assert.AreEqual(false, parentSet.HasDataAfterFrame(0), "HasDataAfterFrame should always be false for a dataset with no streams and no children.");
Assert.AreEqual(false, childSet.HasDataAfterFrame(0), "HasDataAfterFrame should always be false for a dataset with no streams and no children.");
parentSet.AddChild(childSet);
Assert.AreEqual(false, parentSet.HasDataAfterFrame(0), "HasDataAfterFrame should always be false for a dataset with no streams and a child that has no samples/streams.");
}
[Test]
public void EventDataSet_RemoveChild_SimpleAddRemove()
{
EventDataSet parentSet = new EventDataSet();
EventDataSet childSet = new EventDataSet();
parentSet.AddChild(childSet);
Assert.AreEqual(true, parentSet.HasChildren, "HasChildren should be true after a child is added. ");
parentSet.RemoveChild(childSet.ObjectId);
Assert.AreEqual(false, parentSet.HasChildren, "HasChildren should be false after child is removed. ");
Assert.IsNull(parentSet.m_Children, "m_Children should be set to null after last child is removed. ");
}
[Test]
public void EventDataSet_GetStreamValue_SimpleGet()
{
EventDataSet testSet = new EventDataSet();
testSet.AddSample(0, 0, 1);
Assert.AreEqual(1, testSet.GetStreamValue(0, 0));
}
[Test]
public void EventDataSet_GetStreamValue_ReturnsZeroOnNullStreamIndex()
{
EventDataSet testSet = new EventDataSet();
//stream number > stream count case
Assert.AreEqual(0, testSet.GetStreamValue(1, 1), "GetStreamValue should return 0 when queried with a stream index greater than the count of total streams. ");
testSet.AddSample(2, 0, 2);
//null stream case
Assert.AreEqual(0, testSet.GetStreamValue(1, 0), "GetStreamValue should return 0 when querying the index of an uninitialized stream. ");
}
[Test]
public void EventDataSet_GetStream_ReturnsNullOnNonexistentStream()
{
EventDataSet testSet = new EventDataSet();
Assert.IsNull(testSet.GetStream(1), "GetStream should return null when queried with a stream index greater than the count of total streams.");
testSet.AddSample(2, 0, 2);
Assert.IsNull(testSet.GetStream(1), "GetStream should return null when querying an uninitialized stream. ");
}
[Test]
public void EventDataSet_GetStream_SimpleGet()
{
EventDataSet testSet = new EventDataSet();
testSet.AddSample(0, 0, 1);
var soughtStream = testSet.m_Streams[0];
Assert.AreEqual(soughtStream, testSet.GetStream(0), "Correct stream not returned by GetStream");
}
[Test]
public void EventDataSet_HasRefcountAfterFrame_ReturnsTrueOnTrivialCase()
{
EventDataSet testSet = new EventDataSet();
//Add sample to the refcount stream
testSet.AddSample((int)ResourceManager.DiagnosticEventType.AsyncOperationReferenceCount, 5, 1);
Assert.AreEqual(true, testSet.HasRefcountAfterFrame(0, true), "Refcount after frame was considered 0 when sample should have been added.");
}
[Test]
public void EventDataSet_HasRefcountAfterFrame_ReturnsTrueOnChildCase()
{
EventDataSet testSet = new EventDataSet();
testSet.AddSample((int)ResourceManager.DiagnosticEventType.AsyncOperationReferenceCount, 2, 1);
testSet.AddSample((int)ResourceManager.DiagnosticEventType.AsyncOperationReferenceCount, 4, 0);
EventDataSet childSet = new EventDataSet();
childSet.AddSample((int)ResourceManager.DiagnosticEventType.AsyncOperationReferenceCount, 5, 1);
testSet.AddChild(childSet);
Assert.AreEqual(true, testSet.HasRefcountAfterFrame(3, true), "Child refcount not properly considered when checking parent's refcount.");
}
}
}