Initial commit: AIGame Unity client with URP, HybridCLR, YooAsset and tooling.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using Unity.Pipeline;
|
||||
|
||||
namespace Unity.Pipeline.Tests.Editor
|
||||
{
|
||||
class DialogStateTrackerTests
|
||||
{
|
||||
[Test]
|
||||
public void NoDialogShown_IsDialogOpen_False_AndCurrentlyOpen_Empty()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
|
||||
Assert.IsFalse(tracker.IsDialogOpen);
|
||||
Assert.IsEmpty(tracker.CurrentlyOpen);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void OnShown_MakesIsDialogOpen_True_AndAppearsInCurrentlyOpen()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
var openedAt = DateTime.UtcNow;
|
||||
|
||||
tracker.OnShown(1, "native", "Title", "Message", new[] { "OK" }, "Warning", openedAt);
|
||||
|
||||
Assert.IsTrue(tracker.IsDialogOpen);
|
||||
var open = tracker.CurrentlyOpen.Single();
|
||||
Assert.AreEqual(1, open.Id);
|
||||
Assert.AreEqual("native", open.Source);
|
||||
Assert.AreEqual("Title", open.Title);
|
||||
Assert.AreEqual("Message", open.Message);
|
||||
CollectionAssert.AreEqual(new[] { "OK" }, open.Buttons);
|
||||
Assert.AreEqual("Warning", open.Level);
|
||||
Assert.AreEqual(openedAt, open.OpenedAtUtc);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void OnDismissed_RemovesFromCurrentlyOpen()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
tracker.OnShown(1, "native", "Title", "Message", new[] { "OK" }, "Info", DateTime.UtcNow);
|
||||
|
||||
tracker.OnDismissed(1, DateTime.UtcNow);
|
||||
|
||||
Assert.IsFalse(tracker.IsDialogOpen);
|
||||
Assert.IsEmpty(tracker.CurrentlyOpen);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TwoDialogsOpenBeforeEitherDismissed_BothAppearInCurrentlyOpen_DismissingOneLeavesOtherActive()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
tracker.OnShown(1, "native", "A", "a", new[] { "OK" }, "Info", DateTime.UtcNow);
|
||||
tracker.OnShown(2, "managed", "B", null, null, null, DateTime.UtcNow);
|
||||
|
||||
Assert.AreEqual(2, tracker.CurrentlyOpen.Count);
|
||||
|
||||
tracker.OnDismissed(1, DateTime.UtcNow);
|
||||
|
||||
Assert.IsTrue(tracker.IsDialogOpen);
|
||||
var remaining = tracker.CurrentlyOpen.Single();
|
||||
Assert.AreEqual(2, remaining.Id);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void OnDismissed_WithUnknownId_IsNoOp()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
|
||||
Assert.DoesNotThrow(() => tracker.OnDismissed(999, DateTime.UtcNow));
|
||||
Assert.IsFalse(tracker.IsDialogOpen);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EventsSince_IncludesDismissedDialogsOpenedAtOrAfterTimestamp()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
var beforeCommand = DateTime.UtcNow;
|
||||
var openedAt = beforeCommand.AddMilliseconds(10);
|
||||
tracker.OnShown(1, "native", "Title", "Message", new[] { "OK" }, "Info", openedAt);
|
||||
tracker.OnDismissed(1, openedAt.AddMilliseconds(5));
|
||||
|
||||
var events = tracker.EventsSince(beforeCommand);
|
||||
|
||||
var found = events.Single();
|
||||
Assert.AreEqual(1, found.Id);
|
||||
Assert.IsTrue(found.DismissedAtUtc.HasValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EventsSince_ExcludesDialogsOpenedBeforeTheTimestamp()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
var openedAt = DateTime.UtcNow;
|
||||
tracker.OnShown(1, "native", "Title", "Message", new[] { "OK" }, "Info", openedAt);
|
||||
tracker.OnDismissed(1, openedAt.AddMilliseconds(5));
|
||||
|
||||
var events = tracker.EventsSince(openedAt.AddSeconds(1));
|
||||
|
||||
Assert.IsEmpty(events);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EventsSince_IncludesStillOpenDialogs()
|
||||
{
|
||||
var tracker = new DialogStateTracker();
|
||||
var beforeCommand = DateTime.UtcNow;
|
||||
tracker.OnShown(1, "native", "Title", "Message", new[] { "OK" }, "Info", beforeCommand.AddMilliseconds(5));
|
||||
|
||||
var events = tracker.EventsSince(beforeCommand);
|
||||
|
||||
var found = events.Single();
|
||||
Assert.AreEqual(1, found.Id);
|
||||
Assert.IsFalse(found.DismissedAtUtc.HasValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user