public async Task MobileServiceCollectionMultipleLoadItemsAsyncShouldThrow()
 {
     await Assert.ThrowsAsync <InvalidOperationException>(async() =>
     {
         MobileServiceTableQueryMock <Book> query  = new MobileServiceTableQueryMock <Book>();
         MobileServiceCollection <Book> collection = new MobileServiceCollection <Book>(query);
         CancellationTokenSource tokenSource       = new CancellationTokenSource();
         await Task.WhenAll(collection.LoadMoreItemsAsync(tokenSource.Token), collection.LoadMoreItemsAsync(tokenSource.Token));
     });
 }
예제 #2
0
        public async Task MobileServiceCollectionHasMoreItemsShouldBeFalseAfterRetrievingDataWhenNoPaging()
        {
            // Get the Books table
            MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>();

            MobileServiceCollection <Book> collection  = new MobileServiceCollection <Book>(query);
            CancellationTokenSource        tokenSource = new CancellationTokenSource();

            List <string> properties         = new List <string>();
            List <string> expectedProperties = new List <string>()
            {
                "HasMoreItems", "Count", "Item[]", "Count", "Item[]", "TotalCount"
            };
            List <NotifyCollectionChangedAction> actions         = new List <NotifyCollectionChangedAction>();
            List <NotifyCollectionChangedAction> expectedActions = new List <NotifyCollectionChangedAction>()
            {
                NotifyCollectionChangedAction.Add, NotifyCollectionChangedAction.Add
            };

            ((INotifyPropertyChanged)collection).PropertyChanged += (s, e) => properties.Add(e.PropertyName);
            collection.CollectionChanged += (s, e) => actions.Add(e.Action);
            int result = await collection.LoadMoreItemsAsync(tokenSource.Token);

            Assert.IsFalse(collection.HasMoreItems);
            Assert.IsTrue(properties.SequenceEqual(expectedProperties));
            Assert.IsTrue(actions.SequenceEqual(expectedActions));
        }
        public async Task MobileServiceCollectionTotalCountSet()
        {
            // Get the Books table
            MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>();

            List <string> properties         = new List <string>();
            List <string> expectedProperties = new List <string>()
            {
                "HasMoreItems", "Count", "Item[]", "Count", "Item[]", "TotalCount"
            };
            List <NotifyCollectionChangedAction> actions         = new List <NotifyCollectionChangedAction>();
            List <NotifyCollectionChangedAction> expectedActions = new List <NotifyCollectionChangedAction>()
            {
                NotifyCollectionChangedAction.Add, NotifyCollectionChangedAction.Add
            };

            MobileServiceCollection <Book, Book> collection = new MobileServiceCollection <Book, Book>(query);
            CancellationTokenSource tokenSource             = new CancellationTokenSource();

            ((INotifyPropertyChanged)collection).PropertyChanged += (s, e) => properties.Add(e.PropertyName);
            collection.CollectionChanged += (s, e) => actions.Add(e.Action);
            int result = await collection.LoadMoreItemsAsync(tokenSource.Token);

            Assert.Equal(2, collection.TotalCount);
            Assert.Equal(expectedProperties, properties);
            Assert.Equal(expectedActions, actions);
        }
예제 #4
0
        public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingCompleteEventAfterReadingData()
        {
            // Get the Books table
            MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>();

            MobileServiceCollection <Book, Book> collection = new MobileServiceCollection <Book, Book>(query);
            CancellationTokenSource tokenSource             = new CancellationTokenSource();

            Exception ex = null;

            int loadedEventArgsManyItemsLoaded = 0;

            collection.LoadingComplete += (s, e) => loadedEventArgsManyItemsLoaded = e.TotalItemsLoaded;

            try
            {
                int result = await collection.LoadMoreItemsAsync(tokenSource.Token);
            }
            catch (Exception e)
            {
                ex = e;
            }

            Assert.AreEqual(loadedEventArgsManyItemsLoaded, 2);
            Assert.IsNull(ex);
        }
예제 #5
0
        public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingItemsEventBeforeReadingData()
        {
            // Get the Books table
            MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>();

            MobileServiceCollection <Book, Book> collection = new MobileServiceCollection <Book, Book>(query);
            CancellationTokenSource tokenSource             = new CancellationTokenSource();

            Exception ex = null;

            bool firedLoading = false;

            collection.LoadingItems += (s, e) => firedLoading = true;

            try
            {
                int result = await collection.LoadMoreItemsAsync(tokenSource.Token);
            }
            catch (Exception e)
            {
                ex = e;
            }

            Assert.IsTrue(firedLoading);
            Assert.IsNull(ex);
        }
예제 #6
0
        public async Task MobileServiceCollectionMultipleLoadItemsAsyncShouldThrow()
        {
            // Get the Books table
            MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>();

            MobileServiceCollection <Book> collection  = new MobileServiceCollection <Book>(query);
            CancellationTokenSource        tokenSource = new CancellationTokenSource();

            Exception ex = null;

            try
            {
                await Task.WhenAll(collection.LoadMoreItemsAsync(tokenSource.Token), collection.LoadMoreItemsAsync(tokenSource.Token));
            }
            catch (InvalidOperationException e)
            {
                ex = e;
            }

            Assert.IsNotNull(ex);
        }
        public async Task MobileServiceCollectionMultipleLoadItemsAsyncShouldThrow()
        {
            // Get the Books table
            MobileServiceTableQueryMock<Book> query = new MobileServiceTableQueryMock<Book>();

            MobileServiceCollection<Book, Book> collection = new MobileServiceCollection<Book, Book>(query);
            CancellationTokenSource tokenSource = new CancellationTokenSource();

            Exception ex = null;

            try
            {
                await TaskEx.WhenAll(collection.LoadMoreItemsAsync(tokenSource.Token), collection.LoadMoreItemsAsync(tokenSource.Token));
            }
            catch (InvalidOperationException e)
            {
                ex = e;
            }

            Assert.IsNotNull(ex);
        } 
        public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingCompleteEventAfterReadingData()
        {
            // Get the Books table
            MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>();

            MobileServiceCollection <Book, Book> collection = new MobileServiceCollection <Book, Book>(query);
            CancellationTokenSource tokenSource             = new CancellationTokenSource();

            int loadedEventArgsManyItemsLoaded = 0;

            collection.LoadingComplete += (s, e) => loadedEventArgsManyItemsLoaded = e.TotalItemsLoaded;
            _ = await collection.LoadMoreItemsAsync(tokenSource.Token);

            Assert.Equal(2, loadedEventArgsManyItemsLoaded);
        }
        public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingItemsEventBeforeReadingData()
        {
            // Get the Books table
            MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>();

            MobileServiceCollection <Book, Book> collection = new MobileServiceCollection <Book, Book>(query);
            CancellationTokenSource tokenSource             = new CancellationTokenSource();

            bool firedLoading = false;

            collection.LoadingItems += (s, e) => firedLoading = true;
            _ = await collection.LoadMoreItemsAsync(tokenSource.Token);

            Assert.True(firedLoading);
        }
        public async Task MobileServiceCollectionHasMoreItemsShouldBeFalseAfterRetrievingDataWhenNoPaging()
        {
            // Get the Books table
            MobileServiceTableQueryMock<Book> query = new MobileServiceTableQueryMock<Book>();

            MobileServiceCollection<Book, Book> collection = new MobileServiceCollection<Book, Book>(query);
            CancellationTokenSource tokenSource = new CancellationTokenSource();

            List<string> properties = new List<string>();
            List<string> expectedProperties = new List<string>() { "HasMoreItems", "Count", "Item[]", "Count", "Item[]", "TotalCount" };
            List<NotifyCollectionChangedAction> actions = new List<NotifyCollectionChangedAction>();
            List<NotifyCollectionChangedAction> expectedActions = new List<NotifyCollectionChangedAction>() { NotifyCollectionChangedAction.Add, NotifyCollectionChangedAction.Add };

            ((INotifyPropertyChanged)collection).PropertyChanged += (s, e) => properties.Add(e.PropertyName);
            collection.CollectionChanged += (s, e) => actions.Add(e.Action);
            int result = await collection.LoadMoreItemsAsync(tokenSource.Token);

            Assert.IsFalse(collection.HasMoreItems);
            Assert.IsTrue(properties.SequenceEqual(expectedProperties));
            Assert.IsTrue(actions.SequenceEqual(expectedActions));
        }
        public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingCompleteEventAfterReadingData()
        {
            // Get the Books table
            MobileServiceTableQueryMock<Book> query = new MobileServiceTableQueryMock<Book>();

            MobileServiceCollection<Book, Book> collection = new MobileServiceCollection<Book, Book>(query);
            CancellationTokenSource tokenSource = new CancellationTokenSource();

            Exception ex = null;

            int loadedEventArgsManyItemsLoaded = 0;
            collection.LoadingComplete += (s, e) => loadedEventArgsManyItemsLoaded = e.TotalItemsLoaded;

            try
            {
                int result = await collection.LoadMoreItemsAsync(tokenSource.Token);
            }
            catch (Exception e)
            {
                ex = e;
            }

            Assert.AreEqual(loadedEventArgsManyItemsLoaded, 2);
            Assert.IsNull(ex);

        }    
        public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingItemsEventBeforeReadingData()
        {
            // Get the Books table
            MobileServiceTableQueryMock<Book> query = new MobileServiceTableQueryMock<Book>();

            MobileServiceCollection<Book, Book> collection = new MobileServiceCollection<Book, Book>(query);
            CancellationTokenSource tokenSource = new CancellationTokenSource();

            Exception ex = null;

            bool firedLoading = false;

            collection.LoadingItems += (s, e) => firedLoading = true;

            try
            {
                int result = await collection.LoadMoreItemsAsync(tokenSource.Token);
            }
            catch (Exception e)
            {
                ex = e;
            }

            Assert.IsTrue(firedLoading);
            Assert.IsNull(ex);

        }