public void CannotSortTest()
        {
            List <TestClass> intList = new List <TestClass>()
            {
                new TestClass()
            };
            PagedCollectionView pcv = new PagedCollectionView(intList);

            // we are not allowed to sort during an edit operation
            pcv.EditItem(pcv[0]);
            PagedCollectionViewTest.AssertExpectedException(
                new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, PagedCollectionViewResources.OperationNotAllowedDuringAddOrEdit, "Sorting")),
                delegate
            {
                pcv.SortDescriptions.Clear();
            });
            pcv.CommitEdit();

            // we are not allowed to sort during an add new operation
            pcv.AddNew();
            PagedCollectionViewTest.AssertExpectedException(
                new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, PagedCollectionViewResources.OperationNotAllowedDuringAddOrEdit, "Sorting")),
                delegate
            {
                pcv.SortDescriptions.Clear();
            });
        }
        public void CannotRefreshTest()
        {
            ObservableCollection <TestClass> collection = new ObservableCollection <TestClass>()
            {
                new TestClass()
            };
            PagedCollectionView pcv = new PagedCollectionView(collection);

            // show that we will throw an exception if we try to change the PageSize while adding
            pcv.AddNew();
            PagedCollectionViewTest.AssertExpectedException(
                new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, PagedCollectionViewResources.OperationNotAllowedDuringAddOrEdit, "Refresh")),
                delegate
            {
                pcv.Refresh();
            });
            pcv.CancelNew();

            // show that we will throw an exception if we try to change the PageSize while editing
            pcv.EditItem(pcv[0]);
            PagedCollectionViewTest.AssertExpectedException(
                new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, PagedCollectionViewResources.OperationNotAllowedDuringAddOrEdit, "Refresh")),
                delegate
            {
                pcv.Refresh();
            });
        }
        public void CannotChangePageSize()
        {
            ObservableCollection <TestClass> collection = new ObservableCollection <TestClass>()
            {
                new TestClass()
            };
            PagedCollectionView pcv = new PagedCollectionView(collection);

            // show that we will throw an exception if we try to change the PageSize while adding
            pcv.AddNew();
            PagedCollectionViewTest.AssertExpectedException(
                new InvalidOperationException(PagedCollectionViewResources.ChangingPageSizeNotAllowedDuringAddOrEdit),
                delegate
            {
                pcv.PageSize = 10;
            });
            pcv.CancelNew();

            // show that we will throw an exception if we try to change the PageSize while editing
            pcv.EditItem(pcv[0]);
            PagedCollectionViewTest.AssertExpectedException(
                new InvalidOperationException(PagedCollectionViewResources.ChangingPageSizeNotAllowedDuringAddOrEdit),
                delegate
            {
                pcv.PageSize = 10;
            });
        }
        public void MoveCurrencyToInvalidPosition()
        {
            // when setting to a value < -1, we should throw
            PagedCollectionViewTest.AssertExpectedException(
                new ArgumentOutOfRangeException("position"),
                delegate
            {
                CollectionView.MoveCurrentToPosition(-2);
            });

            // when setting to a value > count, we should throw
            PagedCollectionViewTest.AssertExpectedException(
                new ArgumentOutOfRangeException("position"),
                delegate
            {
                CollectionView.MoveCurrentToPosition(26);
            });
        }
        public void CannotAddNewTest()
        {
            // if the size of the collection is fixed, we are not allowed to add items to it.
            FixedSizeCollection <TestClass> fixedSizeCollection = new FixedSizeCollection <TestClass>();
            PagedCollectionView             pcv1 = new PagedCollectionView(fixedSizeCollection);

            Assert.IsFalse(pcv1.CanAddNew);

            // if the item type does not have a constructor, we are not allowed to call AddNew.
            List <int>          intList = new List <int>();
            PagedCollectionView pcv2    = new PagedCollectionView(intList);

            Assert.IsFalse(pcv2.CanAddNew);

            PagedCollectionViewTest.AssertExpectedException(
                new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, PagedCollectionViewResources.OperationNotAllowedForView, "AddNew")),
                delegate
            {
                pcv2.AddNew();
            });
        }
        public void CannotChangeNewItemPlaceholderPositionTests()
        {
            List <TestClass> intList = new List <TestClass>()
            {
                new TestClass()
            };
            PagedCollectionView pcv = new PagedCollectionView(intList);

            Assert.AreEqual(NewItemPlaceholderPosition.None, pcv.NewItemPlaceholderPosition);

            PagedCollectionViewTest.AssertExpectedException(
                new ArgumentException(
                    string.Format(CultureInfo.InvariantCulture,
                                  PagedCollectionViewResources.InvalidEnumArgument,
                                  "value",
                                  "123",
                                  typeof(NewItemPlaceholderPosition).Name)),
                delegate
            {
                pcv.NewItemPlaceholderPosition = (NewItemPlaceholderPosition)123;
            });
        }
        public void CultureTest()
        {
            // verify that Culture is set to null initially
            PagedCollectionView pcv = new PagedCollectionView(new List <int>());

            Assert.IsNull(pcv.Culture);

            // validate setting and retrieving the property
            pcv.Culture = CultureInfo.InvariantCulture;
            Assert.AreEqual(CultureInfo.InvariantCulture, pcv.Culture);

            pcv.Culture = CultureInfo.CurrentUICulture;
            Assert.AreEqual(CultureInfo.CurrentUICulture, pcv.Culture);

            // verify that if we try to set the value to null after it
            // has been set, we get an exception
            PagedCollectionViewTest.AssertExpectedException(
                new ArgumentNullException("value"),
                delegate
            {
                pcv.Culture = null;
            });
        }
        public void CancelCurrentChangingDuringPageSizeUpdate()
        {
            // if we don't implement IList, we cannot run the rest of
            // the test as we cannot add/remove items
            if (this.ImplementsIList)
            {
                CollectionView.CurrentChanging += new CurrentChangingEventHandler(CancelCurrentChanging);

                // add a new item
                TestClass newItem = CollectionView.AddNew() as TestClass;
                Assert.IsTrue(CollectionView.IsAddingNew);

                // verify that because the currency change is cancelled, we do not continue and throw
                PagedCollectionViewTest.AssertExpectedException(
                    new InvalidOperationException(PagedCollectionViewResources.ChangingPageSizeNotAllowedDuringAddOrEdit),
                    delegate
                {
                    CollectionView.PageSize = 10;
                });


                // now edit an item
                CollectionView.EditItem(CollectionView[0]);
                Assert.IsTrue(CollectionView.IsEditingItem);

                // verify that because the currency change is cancelled, we do not continue and throw
                PagedCollectionViewTest.AssertExpectedException(
                    new InvalidOperationException(PagedCollectionViewResources.ChangingPageSizeNotAllowedDuringAddOrEdit),
                    delegate
                {
                    CollectionView.PageSize = 10;
                });

                CollectionView.CurrentChanging -= new CurrentChangingEventHandler(CancelCurrentChanging);
            }
        }