rd-net/Test.Lifetimes/Collections/Viewable/ReactiveExTest.cs (40 lines of code) (raw):

using System.Threading.Tasks; using JetBrains.Collections.Viewable; using NUnit.Framework; namespace Test.Lifetimes.Collections.Viewable; [TestFixture] public class ReactiveExTest : LifetimesTestBase { [Test] public void NextValueAsyncTest() { var lifetimeDef = TestLifetime.CreateNested(); var signal = new Signal<int>(); { var task = signal.NextValueAsync(lifetimeDef.Lifetime, i => i == 1); Assert.IsFalse(task.IsCompleted); signal.Fire(0); Assert.IsFalse(task.IsCompleted); signal.Fire(1); Assert.AreEqual(TaskStatus.RanToCompletion, task.Status); Assert.AreEqual(1, task.Result); } { var task = signal.NextValueAsync(lifetimeDef.Lifetime); lifetimeDef.Terminate(); Assert.IsTrue(task.IsCanceled); } } [Test] public void AdviceOnceTest() { var signal = new Signal<int>(); var count = 0; signal.AdviseOnce(TestLifetime, _ => { Assert.AreEqual(0, count++); signal.Fire(1); }); signal.Fire(0); } }