public void Adding_new_screen_initializesIt()
        {
            var id = 112;
            Views.NavigationModel model = new Views.NavigationModel();

            var createdScreen = MockScreen.CreateOrSelectInNavigation(model, id);

            Assert.IsTrue(createdScreen.WasInitialized);
        }
        public void Adding_new_screen_creates_it_adds_it_to_items_and_sets_as_current()
        {
            var id = 112;
            Views.NavigationModel model = new Views.NavigationModel();

            var createdScreen = MockScreen.CreateOrSelectInNavigation(model, id);

            Assert.AreEqual(id, createdScreen.Id, "Added screen didn't seem to have correct id!");
            Assert.IsTrue(model.Items.Contains(createdScreen), "New screen was not added to Items");
            Assert.AreSame(createdScreen, model.CurrentScreen, "New screen was not selected");
        }
        public void Clicking_item_sets_current_and_triggers_event()
        {
            Views.NavigationModel navigation = new Views.NavigationModel();

            MockScreen.CreateOrSelectInNavigation(navigation, 123);
            MockScreen.CreateOrSelectInNavigation(navigation, 456);
            MockScreen.CreateOrSelectInNavigation(navigation, 789);

            bool displayCalled = false;

            var modelToClick = navigation.Items.First();

            navigation.CurrentScreenChanged += (ss, eg) => displayCalled = eg.Current == modelToClick;

            navigation.ItemClicked(modelToClick);

            Assert.IsTrue(navigation.CurrentScreen == modelToClick);
            Assert.IsTrue(displayCalled);
        }
        public void Openning_already_oppened_screen_selects_it()
        {
            var ids = new[] { 98, 152, 931 };
            Views.NavigationModel model = new Views.NavigationModel();

            List<MockScreen> createdScreens = new List<MockScreen>();
            foreach (var id in ids)
            {
                var createdScreen = MockScreen.CreateOrSelectInNavigation(model, id);
                createdScreens.Add(createdScreen);
            }

            for (int i = 0; i < ids.Length; i++)
            {
                int id = ids[i];
                var oppenedScreen = MockScreen.CreateOrSelectInNavigation(model, id);

                Assert.AreSame(oppenedScreen, createdScreens[i], "Openned screen was not same as created!");
                Assert.AreSame(oppenedScreen, model.CurrentScreen, "New screen was not selected");
            }
        }