public void GetNextItemAndGetPreviousItem()
        {
            var vm = GetNewSearchListVm();
            IInfoList iInfoList = new DetailsViewModelTests.InfoList();
            var result = new DataPortalResult<IInfoList>(iInfoList, null, null);
            var list = new CollectionViewSource { Source = result.Object };
            var collectionView = list.View;
            Mock.Arrange(() => vm.InfoListViewSource).Returns(collectionView);
            vm.TotalRowCount = 3;

            var infoClass0 = Mock.Create<IInfoClass>();
            var infoClass1 = Mock.Create<IInfoClass>();
            var infoClass2 = Mock.Create<IInfoClass>();
            Mock.Arrange(() => infoClass0.Id).Returns(0);
            Mock.Arrange(() => infoClass1.Id).Returns(1);
            Mock.Arrange(() => infoClass2.Id).Returns(2);

            var infoList = new List<IInfoClass>
            {
                infoClass0, 
                infoClass1, 
                infoClass2
            };
            Mock.Arrange(() => collectionView.SourceCollection).Returns(infoList);

            Mock.Arrange(() => vm.GoToDetails()).DoNothing();

            collectionView.Refresh();
            vm.SelectedItem = infoClass0;

            vm.MoveNextItem();
            Assert.AreEqual(infoClass1, vm.SelectedItem);
            vm.MoveNextItem();
            Assert.AreEqual(infoClass2, vm.SelectedItem);
            vm.MoveNextItem();
            Assert.AreEqual(infoClass2, vm.SelectedItem);


            vm.MovePrevItem();
            Assert.AreEqual(infoClass1, vm.SelectedItem);
            vm.MovePrevItem();
            Assert.AreEqual(infoClass0, vm.SelectedItem);
            vm.MovePrevItem();
            Assert.AreEqual(infoClass0, vm.SelectedItem);
        }
        public void MoveCurrentTo()
        {
            var vm = GetNewSearchListVm();
            IInfoList iInfoList = new DetailsViewModelTests.InfoList();
            var result = new DataPortalResult<IInfoList>(iInfoList, null, null);
            var list = new CollectionViewSource { Source = result.Object };
            var collectionView = list.View;
            Mock.Arrange(() => vm.InfoListViewSource).Returns(collectionView);

            var infoClass0 = Mock.Create<IInfoClass>();
            var infoClass1 = Mock.Create<IInfoClass>();
            var infoClass2 = Mock.Create<IInfoClass>();
            Mock.Arrange(() => infoClass0.Id).Returns(0);
            Mock.Arrange(() => infoClass1.Id).Returns(1);
            Mock.Arrange(() => infoClass2.Id).Returns(2);

            var infoList = new List<IInfoClass>
            {
                infoClass0, 
                infoClass1, 
                infoClass2
            };

            Mock.Arrange(() => collectionView.SourceCollection).Returns(infoList);

            collectionView.Refresh();

            vm.MoveCurrentTo(0);
            Assert.AreEqual(0, vm.CurrentPosition);
            vm.MoveCurrentTo(1);
            Assert.AreEqual(1, vm.CurrentPosition);
            vm.MoveCurrentTo(2);
            Assert.AreEqual(2, vm.CurrentPosition);
        }