Esempio n. 1
0
        public void Navigate_With_Commands_Update_CanExecute()
        {
            var items    = new List <MySharedItem>();
            var source   = new ListCollectionViewEx(items);
            var commands = new ListCollectionViewCommands(source);

            Assert.AreEqual(false, commands.MoveCurrentToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToLastCommand.CanExecute(null));

            var itemA = new MySharedItem();

            source.AddNewItem(itemA);

            Assert.AreEqual(itemA, source.CurrentItem);
            Assert.AreEqual(false, commands.MoveCurrentToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToLastCommand.CanExecute(null));

            var itemB = new MySharedItem();

            source.AddNewItem(itemB);

            Assert.AreEqual(itemB, source.CurrentItem);
            Assert.AreEqual(true, commands.MoveCurrentToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveCurrentToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToLastCommand.CanExecute(null));

            commands.MoveCurrentToPreviousCommand.Execute(null); // B => A
            Assert.AreEqual(itemA, source.CurrentItem);
            Assert.AreEqual(false, commands.MoveCurrentToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToPreviousCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveCurrentToNextCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveCurrentToLastCommand.CanExecute(null));

            commands.MoveCurrentToNextCommand.Execute(null); // A => B
            Assert.AreEqual(itemB, source.CurrentItem);
            Assert.AreEqual(true, commands.MoveCurrentToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveCurrentToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToLastCommand.CanExecute(null));

            commands.MoveCurrentToFirstCommand.Execute(null);
            Assert.AreEqual(itemA, source.CurrentItem);
            Assert.AreEqual(false, commands.MoveCurrentToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToPreviousCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveCurrentToNextCommand.CanExecute(null)); // not clear backstack
            Assert.AreEqual(true, commands.MoveCurrentToLastCommand.CanExecute(null));

            commands.MoveCurrentToLastCommand.Execute(null);
            Assert.AreEqual(itemB, source.CurrentItem);
            Assert.AreEqual(true, commands.MoveCurrentToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveCurrentToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveCurrentToLastCommand.CanExecute(null));
        }
        public void Navigate_With_Commands_Update_CanExecute()
        {
            var sharedSource = new SharedSource <MySharedItem>();
            var commands     = new SharedSourceCommands(sharedSource);

            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            var itemA = new MySharedItem();

            sharedSource.Add(itemA);

            Assert.AreEqual(true, itemA.IsOnNavigatedToInvoked);
            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            var itemB = new MySharedItem();

            sharedSource.Add(itemB);

            Assert.AreEqual(true, itemB.IsOnNavigatedToInvoked);
            Assert.AreEqual(true, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToPreviousCommand.Execute(null); // B => A
            Assert.AreEqual(itemA, sharedSource.SelectedItem);
            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToNextCommand.Execute(null); // A => B
            Assert.AreEqual(itemB, sharedSource.SelectedItem);
            Assert.AreEqual(true, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToFirstCommand.Execute(null);
            Assert.AreEqual(itemA, sharedSource.SelectedItem);
            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToNextCommand.CanExecute(null)); // not clear backstack
            Assert.AreEqual(true, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToLastCommand.Execute(null);
            Assert.AreEqual(itemB, sharedSource.SelectedItem);
            Assert.AreEqual(true, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));
        }