public async Task TearDownAsync()
        {
            await controller.Stop();

            eventsController?.Stop();
            eventsController = null;
            taggingController?.Stop();
            taggingController = null;
        }
        public void Setup()
        {
            VideoPlayerVM videoPlayer = new VideoPlayerVM {
                CamerasConfig = new ObservableCollection <CameraConfig> ()
            };

            LMProject project = Utils.CreateProject();

            player1 = new PlayerVM {
                Model = new Utils.PlayerDummy()
            };
            player2 = new PlayerVM {
                Model = new Utils.PlayerDummy()
            };

            team1 = new TeamVM();
            team1.ViewModels.Add(player1);
            team1.ViewModels.Add(player2);

            teams = new List <TeamVM> {
                team1
            };

            projectVM = new LMProjectVM {
                Model = project
            };

            controller = new LMTaggingController();
            controller.SetViewModel(new ProjectAnalysisVM <LMProjectVM> {
                VideoPlayer = videoPlayer, Project = projectVM
            });
            controller.Start();

            mockToolkit            = new Mock <IGUIToolkit> ();
            App.Current.GUIToolkit = mockToolkit.Object;
            timer = new Mock <ITimer> ();
            App.Current.DependencyRegistry.Register <ITimer> (timer.Object, 1);
        }
        public async Task Setup()
        {
            App.Current.HotkeysService = new HotkeysService();
            LMGeneralUIHotkeys.RegisterDefaultHotkeys();
            mockToolkit = new Mock <IGUIToolkit> ();
            mockToolkit.SetupGet(o => o.DeviceScaleFactor).Returns(1.0f);
            App.Current.GUIToolkit = mockToolkit.Object;

            VideoPlayerVM videoPlayer = new VideoPlayerVM {
                CamerasConfig = new RangeObservableCollection <CameraConfig> ()
            };

            LMProject project = Utils.CreateProject();

            projectVM = new LMProjectVM {
                Model = project
            };

            var projectAnalysisVM = new LMProjectAnalysisVM {
                VideoPlayer = videoPlayer, Project = projectVM
            };

            controller = new LMTaggingController();
            controller.SetViewModel(projectAnalysisVM);
            await controller.Start();

            teamController = new LMTeamTaggerController();
            teamController.SetViewModel(projectAnalysisVM);
            await teamController.Start();

            resetEvent = new AutoResetEvent(false);
            mockToolkit.Setup(x => x.Invoke(It.IsAny <EventHandler> ())).Callback((EventHandler e) => {
                Task actionExecution = Task.Factory.StartNew(() => e(null, null));
                actionExecution.Wait();
                resetEvent.Set();
            });
        }
        async Task AnalysisSetUpAsync()
        {
            var viewModel = new LMProjectAnalysisVM();

            viewModel.VideoPlayer = new VideoPlayerVM();
            videoPlayer           = viewModel.VideoPlayer;
            teamTagger            = viewModel.TeamTagger;
            projectVM             = new LMProjectVM {
                Model = Utils.CreateProject()
            };
            viewModel.Project = projectVM;
            await ControllerSetUp(viewModel);

            eventsController = new LMEventsController();
            eventsController.SetViewModel(viewModel);
            await eventsController.Start();


            taggingController = new LMTaggingController();
            taggingController.SetViewModel(new ProjectAnalysisVM <LMProjectVM> {
                VideoPlayer = videoPlayer, Project = projectVM
            });
            await taggingController.Start();
        }