예제 #1
0
        public void CanBindFutureToOtherFuture()
        {
            var a = new Future <object>();
            var b = new Future <object>();

            b.Bind(a);
            a.Complete(5);
            Assert.AreEqual(5, b.Result);
        }
예제 #2
0
        public void BindToProperty()
        {
            var tc = new TestClass();
            var ts = new TestStruct();

            var f = new Future <int>();

            f.Bind(() => tc.Property);

            try {
                f.Bind(() => ts.Property);
                Assert.Fail("Did not throw InvalidOperationException");
            } catch (InvalidOperationException) {
            }

            f.Complete(5);

            Assert.AreEqual(5, tc.Property);
            Assert.AreNotEqual(5, ts.Property);
        }
예제 #3
0
파일: Util.cs 프로젝트: jli94/Fracture
 public StoreResult(
     IEnumerator <object> task, Expression <Func <T> > target,
     TaskExecutionPolicy executionPolicy = TaskExecutionPolicy.RunWhileFutureLives
     )
 {
     _Task            = task;
     _Thunk           = new SchedulableGeneratorThunk(_Task);
     _ExecutionPolicy = executionPolicy;
     _Future          = Future.New <T>();
     _Future.Bind(target);
     _Future.RegisterOnComplete(Completed);
 }