예제 #1
0
        public void ReadOnlyMode_BlocksForwardNavigation()
        {
            // arrange

            var nav = new NavigationHistory <int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            nav.IsReadOnly = true;

            // act

            nav.NavigateForward();
            nav.NavigateForward();
            nav.NavigateForward();

            var canStillNavigate = nav.CanNavigateForward;

            nav.IsReadOnly = false;

            var two = nav.NavigateForward();

            // assert

            Assert.True(canStillNavigate);
            Assert.AreEqual(2, two);
        }
예제 #2
0
        public void NavigatingForward_InvokesChangeEvent()
        {
            // arrange

            var nav        = new NavigationHistory <int>();
            var eventCount = 0;

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            nav.OnHistoryChange += () =>
            {
                eventCount++;
            };

            // act

            nav.NavigateForward();

            // assert

            Assert.AreEqual(1, eventCount);
        }
예제 #3
0
        public void After_AddingHistory_ForwardHistoryIsDestroyed()
        {
            // arrange

            var nav = new NavigationHistory<int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);
            nav.AddToHistory(4);
            nav.AddToHistory(5);

            nav.NavigateBackward();
            nav.NavigateBackward();
            nav.NavigateBackward();
            nav.NavigateBackward();

            // act

            nav.AddToHistory(9);

            var one = nav.NavigateBackward();
            var navBackAfterOne = nav.CanNavigateBackward;
            var nine = nav.NavigateForward();
            var navForwAfterNine = nav.CanNavigateForward;

            // assert

            Assert.IsFalse(navBackAfterOne);
            Assert.IsFalse(navForwAfterNine);
            Assert.AreEqual(1, one);
            Assert.AreEqual(9, nine);
        }
예제 #4
0
        public void After_AddingHistory_ForwardHistoryIsDestroyed()
        {
            // arrange

            var nav = new NavigationHistory <int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);
            nav.AddToHistory(4);
            nav.AddToHistory(5);

            nav.NavigateBackward();
            nav.NavigateBackward();
            nav.NavigateBackward();
            nav.NavigateBackward();

            // act

            nav.AddToHistory(9);

            var one              = nav.NavigateBackward();
            var navBackAfterOne  = nav.CanNavigateBackward;
            var nine             = nav.NavigateForward();
            var navForwAfterNine = nav.CanNavigateForward;

            // assert

            Assert.IsFalse(navBackAfterOne);
            Assert.IsFalse(navForwAfterNine);
            Assert.AreEqual(1, one);
            Assert.AreEqual(9, nine);
        }
예제 #5
0
        public void NavigatingForward_WhenUnable_ThrowsException()
        {
            // arrange

            var nav = new NavigationHistory <int>();

            // act

            nav.NavigateForward();

            // assert

            Assert.Fail();
        }
예제 #6
0
        public void NavigatingForward_ProducesCorrectItem()
        {
            // arrange

            var nav = new NavigationHistory <int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            // act

            var two   = nav.NavigateForward();
            var three = nav.NavigateForward();

            // assert

            Assert.AreEqual(2, two);
            Assert.AreEqual(3, three);
        }
예제 #7
0
        public void NavigatingForward_WhenUnable_ThrowsException()
        {
            // arrange

            var nav = new NavigationHistory <int>();

            // act

            TestDelegate act = () => nav.NavigateForward();

            // assert

            Assert.Throws <InvalidOperationException>(act);
        }
예제 #8
0
        public void ForwardsNavigation_DuringReadOnlyMode_ProducesDefaultValue()
        {
            // arrange

            var nav = new NavigationHistory <int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            nav.IsReadOnly = true;

            // act

            var zero = nav.NavigateForward();

            // assert

            Assert.AreEqual(default(int), zero);
        }
예제 #9
0
        public void ReadOnlyMode_BlocksForwardNavigation()
        {
            // arrange

            var nav = new NavigationHistory<int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            nav.IsReadOnly = true;

            // act

            nav.NavigateForward();
            nav.NavigateForward();
            nav.NavigateForward();

            var canStillNavigate = nav.CanNavigateForward;

            nav.IsReadOnly = false;

            var two = nav.NavigateForward();

            // assert

            Assert.True(canStillNavigate);
            Assert.AreEqual(2, two);
        }
예제 #10
0
        public void NavigatingForward_WhenUnable_ThrowsException()
        {
            // arrange

            var nav = new NavigationHistory<int>();

            // act

            nav.NavigateForward();

            // assert

            Assert.Fail();
        }
예제 #11
0
        public void NavigatingForward_ProducesCorrectItem()
        {
            // arrange

            var nav = new NavigationHistory<int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            // act

            var two = nav.NavigateForward();
            var three = nav.NavigateForward();

            // assert

            Assert.AreEqual(2, two);
            Assert.AreEqual(3, three);
        }
예제 #12
0
        public void NavigatingForward_InvokesChangeEvent()
        {
            // arrange

            var nav = new NavigationHistory<int>();
            var eventCount = 0;

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            nav.OnHistoryChange += () =>
            {
                eventCount++;
            };

            // act

            nav.NavigateForward();

            // assert

            Assert.AreEqual(1, eventCount);
        }
예제 #13
0
        public void ForwardsNavigation_DuringReadOnlyMode_ProducesDefaultValue()
        {
            // arrange

            var nav = new NavigationHistory<int>();

            nav.AddToHistory(1);
            nav.AddToHistory(2);
            nav.AddToHistory(3);

            nav.NavigateBackward();
            nav.NavigateBackward();

            nav.IsReadOnly = true;

            // act

            var zero = nav.NavigateForward();

            // assert

            Assert.AreEqual(default(int), zero);
        }