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)); }