public void DiscardQueueInSubscriber() { var called = 0; var a = new DummyClass(10); Action queue = null; var obj = new SynchronizedObject <DummyClass>( a, (b, finished) => { called++; queue(); finished(); }); queue = () => { Assert.IsFalse(obj.Queue((current, next) => next(new DummyClass(13)))); }; obj.Queue((current, next) => next(new DummyClass(12))); Assert.AreEqual(1, called); Assert.AreEqual(12, obj.Data.Foo); }
public void QueueInQueue() { var obj = new SynchronizedObject <DummyClass>( new DummyClass(12), (@new, finished) => finished()); obj.Queue((prev, next) => { obj.Queue((_, nnext) => nnext(new DummyClass(-14))); next(new DummyClass(16)); }); Assert.AreEqual(-14, obj.Data.Foo); }
public void MultipleQueued() { var a = new DummyClass(10); var obj = new SynchronizedObject <DummyClass>( a, (e, finished) => { finished(); }); obj.Queue((current, next) => next(new DummyClass(current.Foo + 1))); obj.Queue((current, next) => next(new DummyClass(current.Foo + 1))); obj.Queue((current, next) => next(new DummyClass(current.Foo + 1))); Assert.AreEqual(obj.Data.Foo, a.Foo + 3); }
public void Single() { var calledSub = false; var a = new DummyClass(10); var obj = new SynchronizedObject <DummyClass>( a, (b, finished) => { calledSub = true; Assert.AreEqual(b.Foo, a.Foo + 1); }); obj.Queue((current, next) => next(new DummyClass(current.Foo + 1))); Assert.IsTrue(calledSub); }