public void TestCreate_CreatesNewTask()
            {
                Func <object, string> f         = o => "new result";
                Task <object>         inputTask = Task.FromResult(new object());

                AsyncProperty <string> result = AsyncProperty.Create(inputTask, f);

                Assert.AreNotEqual(inputTask, result.ActualTask);
            }
            public async Task TestCreate_SetsResultantValue()
            {
                const string expectedResult = "Expected Result";

                AsyncProperty <string> result = AsyncProperty.Create(
                    Task.FromResult(new object()),
                    o => expectedResult);
                await result.SafeTask;

                Assert.AreEqual(expectedResult, result.Value);
            }
예제 #3
0
        public UserAccountViewModel(IUserAccount userAccount)
        {
            UserAccount = userAccount;

            AccountName = userAccount.AccountName;

            Task <Person> personTask;

            try
            {
                IDataSourceFactory dataSourceFactory = DataSourceFactory.Default;
                IGPlusDataSource   dataSource        = dataSourceFactory.CreatePlusDataSource(userAccount.GetGoogleCredential());
                personTask = dataSource.GetProfileAsync();
            }
            catch (Exception)
            {
                personTask = Task.FromResult <Person>(null);
            }


            // TODO: Show the default image while it is being loaded.
            ProfilePictureAsync = AsyncProperty.Create(personTask, x => x?.Image.Url);
            NameAsync           = AsyncProperty.Create(personTask, x => x?.DisplayName, Resources.UiLoadingMessage);
        }