public void TestCompleteRun_2Steps() { var tour = new Tour(); tour.Steps = new[] { new Step("1", "Header1", "Content1"), new Step("2", "Header2", "Content2"), }; var manager = new VisualElementManagerMock(tour.Steps); var windowManager = new WindowManagerMock(); var popupNavigator = new PopupNavigatorMock(); var tourRun = new TourRun(tour, manager, windowManager, popupNavigator); tourRun.Start(); Assert.AreEqual(tour.Steps[0], tourRun.CurrentStep); Assert.AreEqual(1, tourRun.CurrentStepNo); Assert.IsTrue(tourRun.CanNextStep()); Assert.IsTrue(tourRun.NextStep()); Assert.AreEqual(tour.Steps[1], tourRun.CurrentStep); Assert.AreEqual(2, tourRun.CurrentStepNo); Assert.IsFalse(tourRun.CanNextStep()); Assert.IsFalse(tourRun.NextStep()); tourRun.Close(); AssertManagerIsClean(popupNavigator, windowManager); }
public void TestStepCount() { var tour = new Tour(); tour.Steps = new[] { new Step("1", "Header1", "Content1", "ID1"), new Step("2", "Header2", "Content2", "ID2"), new Step("3", "Header2", "Content2", "ID2"), }; var manager = new VisualElementManagerMock(tour.Steps); var tourRun = new TourRun(tour, manager, new WindowManagerMock(), new PopupNavigatorMock()); FeatureTour.SetTourRun(tourRun); tourRun.Start(); var vm = tourRun.GetPrivateField <TourViewModel>("myTourViewModel"); Assert.AreEqual(false, vm.HasTourFinished); Assert.AreEqual(3, vm.TotalStepsCount); Assert.AreEqual(1, vm.CurrentStepNo); tourRun.NextStep(); Assert.AreEqual(false, vm.HasTourFinished); Assert.AreEqual(3, vm.TotalStepsCount); Assert.AreEqual(2, vm.CurrentStepNo); tourRun.NextStep(); Assert.AreEqual(true, vm.HasTourFinished); Assert.AreEqual(3, vm.TotalStepsCount); Assert.AreEqual(3, vm.CurrentStepNo); tourRun.NextStep(); Assert.AreEqual(true, vm.HasTourFinished); Assert.AreEqual(3, vm.TotalStepsCount); Assert.AreEqual(3, vm.CurrentStepNo); tourRun.PreviousStep(); Assert.AreEqual(false, vm.HasTourFinished); Assert.AreEqual(3, vm.TotalStepsCount); Assert.AreEqual(2, vm.CurrentStepNo); FeatureTour.SetCurrentRunNull(); }
public void TestStepsContainsElementIdWithNull() { var tour = new Tour(); tour.Steps = new[] { new Step(null, "Header", "Content") }; try { var tourRun = new TourRun(tour, new VisualElementManagerMock(), new WindowManagerMock(), new PopupNavigatorMock()); Assert.Fail(); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(ArgumentException)); } }
public void TestStepsEmpty() { var tour = new Tour(); tour.Steps = new Step[0]; try { var tourRun = new TourRun(tour, new VisualElementManagerMock(), new WindowManagerMock(), new PopupNavigatorMock()); Assert.Fail(); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(ArgumentException)); } }
public void OnStepDoable() { var d = new Doable(); var navigator = FeatureTour.GetNavigator(); navigator.ForStep("ID1").AttachDoable(s => d.do1++); navigator.ForStep("ID2").AttachDoable(s => d.do2++, s => true); navigator.ForStep("ID3").AttachDoable(s => d.do3++, s => false); var tour = new Tour(); tour.Steps = new[] { new Step("1", "Header1", "Content1", "ID1"), new Step("2", "Header2", "Content2", "ID2"), new Step("3", "Header3", "Content3", "ID3"), new Step("4", "Header4", "Content4", "ID4"), }; var manager = new VisualElementManagerMock(tour.Steps); var tourRun = new TourRun(tour, manager, new WindowManagerMock(), new PopupNavigatorMock()); tourRun.Start(); AssertIsDoable(d, 0, 0, 0); Assert.IsTrue(tourRun.ShowDoIt()); Assert.IsTrue(tourRun.CanDoIt()); tourRun.DoIt(); AssertIsDoable(d, 1, 0, 0); tourRun.NextStep(); Assert.IsTrue(tourRun.ShowDoIt()); Assert.IsTrue(tourRun.CanDoIt()); tourRun.DoIt(); AssertIsDoable(d, 1, 1, 0); tourRun.NextStep(); Assert.IsTrue(tourRun.ShowDoIt()); Assert.IsFalse(tourRun.CanDoIt()); tourRun.DoIt(); AssertIsDoable(d, 1, 1, 1); tourRun.NextStep(); Assert.IsFalse(tourRun.ShowDoIt()); Assert.IsFalse(tourRun.CanDoIt()); tourRun.DoIt(); AssertIsDoable(d, 1, 1, 1); }
public void TestCompleteRun_2Steps_UsingNavigator() { var navigator = FeatureTour.GetNavigator(); var tour = new Tour(); tour.Steps = new[] { new Step("1", "Header1", "Content1"), new Step("2", "Header2", "Content2"), }; var manager = new VisualElementManagerMock(tour.Steps); var windowManager = new WindowManagerMock(); var popupNavigator = new PopupNavigatorMock(); var tourRun = new TourRun(tour, manager, windowManager, popupNavigator); FeatureTour.SetTourRun(tourRun); tourRun.Start(); Assert.AreEqual(tour.Steps[0], FeatureTour.CurrentStep); Assert.IsTrue(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoNext()); Assert.AreEqual(tour.Steps[1], FeatureTour.CurrentStep); Assert.IsFalse(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoNext()); Assert.AreEqual(tour.Steps[1], FeatureTour.CurrentStep); Assert.IsTrue(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoPrevious()); Assert.AreEqual(tour.Steps[0], FeatureTour.CurrentStep); Assert.IsFalse(navigator.IfCurrentStepEquals(FeatureTour.CurrentStep.ID).GoPrevious()); Assert.AreEqual(tour.Steps[0], FeatureTour.CurrentStep); Assert.IsTrue(navigator.Close()); Assert.AreEqual(null, FeatureTour.CurrentStep); AssertManagerIsClean(popupNavigator, windowManager); FeatureTour.SetCurrentRunNull(); }
/// <summary> /// Starts the tour. /// </summary> public void Start() { Log.Debug("Starting tour: " + (Name ?? "<null>")); var run = new TourRun(this, TourHelper.VisualElementManager, TourHelper.WindowManager, TourHelper.PopupNavigator); try { FeatureTour.SetTourRun(run); run.Start(); } catch (LicenseException licEx) { MessageBox.Show("Your copy of FeatureTour is not licensed: " + licEx.Message, "FeatureTour not licensed", MessageBoxButton.OK, MessageBoxImage.Warning); } catch (Exception ex) { Log.Error("Tour.Start: Unhandled Exception.", ex); } }
public void TestCompleteRun_2Steps_WithPreviouse() { var tour = new Tour(); tour.Steps = new[] { new Step("1", "Header1", "Content1"), new Step("2", "Header2", "Content2"), }; var manager = new VisualElementManagerMock(tour.Steps); var windowManager = new WindowManagerMock(); var popupNavigator = new PopupNavigatorMock(); var tourRun = new TourRun(tour, manager, windowManager, popupNavigator); Assert.IsNull(popupNavigator.ViewModel); tourRun.Start(); Assert.IsNotNull(popupNavigator.ViewModel); AssertStep(tour, 0, tourRun, popupNavigator); Assert.IsTrue(tourRun.CanNextStep()); Assert.IsTrue(tourRun.NextStep()); AssertStep(tour, 1, tourRun, popupNavigator); Assert.IsTrue(tourRun.CanPreviousStep()); Assert.IsTrue(tourRun.PreviousStep()); AssertStep(tour, 0, tourRun, popupNavigator); Assert.IsFalse(tourRun.PreviousStep()); Assert.IsFalse(tourRun.PreviousStep()); tourRun.Close(); AssertManagerIsClean(popupNavigator, windowManager); }
public void OnStepEnteredLeavedClosed() { var c = new Counter(); var navigator = FeatureTour.GetNavigator(); navigator.OnStepEntered("ID1").Execute(s => c.entered1++); navigator.OnStepEntered("ID2").Execute(s => c.entered2++); navigator.OnStepLeft("ID1").Execute(s => c.leaved1++); navigator.OnStepLeft("ID2").Execute(s => c.leaved2++); navigator.OnClosed().Execute(s => c.closed++); var tour = new Tour(); tour.Steps = new[] { new Step("1", "Header1", "Content1", "ID1"), new Step("2", "Header2", "Content2", "ID2"), }; var manager = new VisualElementManagerMock(tour.Steps); var tourRun = new TourRun(tour, manager, new WindowManagerMock(), new PopupNavigatorMock()); AssertIsCounter(c, 0, 0, 0, 0, 0); FeatureTour.SetTourRun(tourRun); AssertIsCounter(c, 0, 0, 0, 0, 0); tourRun.Start(); AssertIsCounter(c, 1, 0, 0, 0, 0); tourRun.NextStep(); AssertIsCounter(c, 1, 1, 1, 0, 0); tourRun.PreviousStep(); AssertIsCounter(c, 2, 1, 1, 1, 0); tourRun.Close(); AssertIsCounter(c, 2, 2, 1, 1, 1); FeatureTour.SetCurrentRunNull(); }
private void AssertStep(Tour tour, int index, TourRun tourRun, PopupNavigatorMock popupNavigator) { Assert.AreEqual(tour.Steps[index], tourRun.CurrentStep); Assert.AreEqual(index + 1, tourRun.CurrentStepNo); AssertViewModelIsInitialized(tour.Steps[index], popupNavigator.ViewModel); }