public void ShowingCloneDialogWhenLoggedInShowsCloneDialog() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var connection = provider.GetConnection(); connection.Login().Returns(Observable.Return(connection)); var cm = provider.GetConnectionManager(); cm.Connections.Returns(new ObservableCollection <IConnection> { connection }); var host = hosts.GitHubHost; hosts.LookupHost(connection.HostAddress).Returns(host); host.IsLoggedIn.Returns(true); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm, LazySubstitute.For <ITwoFactorChallengeHandler>())) { var list = new List <IView>(); uiController.SelectFlow(UIControllerFlow.Clone) .Subscribe(uc => list.Add(uc as IView), () => { Assert.Equal(1, list.Count); Assert.IsAssignableFrom <IViewFor <IRepositoryCloneViewModel> >(list[0]); }); uiController.Start(connection); } }
public void Start() { _UIController.Start(); _targetCicleController.Start(); _knifeController.Start(); _gameplayController.Start(); }
public void Start() { _tileController.Start(); _UIController.Start(); _ballController.Start(); _gameplayController.Start(); }
public void ShowingCloneDialogWithoutBeingLoggedInShowsLoginDialog() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var loginView = factory.GetView(GitHub.Exports.UIViewType.Login); loginView.Value.Cancel.Returns(Observable.Empty <object>()); var cm = provider.GetConnectionManager(); cm.Connections.Returns(new ObservableCollection <IConnection>()); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm, LazySubstitute.For <ITwoFactorChallengeHandler>())) { var list = new List <IView>(); uiController.SelectFlow(UIControllerFlow.Clone) .Subscribe(uc => list.Add(uc as IView), () => { Assert.True(list.Count > 1); Assert.IsAssignableFrom <IViewFor <ILoginControlViewModel> >(list[0]); }); uiController.Start(null); } }
public void Flow() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollection <IConnection>(); cm.Connections.Returns(cons); // simulate being logged in cons.Add(SetupConnection(provider, hosts, hosts.GitHubHost)); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm)) { var count = 0; var flow = uiController.SelectFlow(UIControllerFlow.Create); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <IRepositoryCreationViewModel> >(uc); TriggerDone(uc); break; } }); uiController.Start(null); Assert.Equal(1, count); Assert.True(uiController.IsStopped); } }
public void RunningAuthFlowWithoutBeingLoggedInRunsAuthFlow() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollection <IConnection>(); cm.Connections.Returns(cons); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm)) { var count = 0; var flow = uiController.SelectFlow(UIControllerFlow.Authentication); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <ILoginControlViewModel> >(uc); TriggerCancel(uc); break; } }); uiController.Start(null); Assert.Equal(1, count); Assert.True(uiController.IsStopped); } }
public void FlowWithConnection() { var provider = Substitutes.GetFullyMockedServiceProvider(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollectionEx <IConnection>(); cm.Connections.Returns(cons); var connection = SetupConnection(provider); // simulate being logged in cons.Add(connection); using (var uiController = new UIController((IGitHubServiceProvider)provider, factory, cm)) { var count = 0; var flow = uiController.Configure(UIControllerFlow.Publish, connection); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <IRepositoryPublishViewModel> >(uc); ((IGitHubServiceProvider)provider).Received().AddService(uiController, connection); TriggerDone(data.View.ViewModel); break; } }); uiController.Start(); Assert.Equal(1, count); Assert.True(uiController.IsStopped); } }
public void ShowingCloneDialogWithoutBeingLoggedInShowsLoginDialog() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var loginView = factory.GetView(GitHub.Exports.UIViewType.Login); loginView.Value.Cancel.Returns(Observable.Empty<object>()); var cm = provider.GetConnectionManager(); var cons = new System.Collections.ObjectModel.ObservableCollection<IConnection>(); cm.Connections.Returns(cons); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm, LazySubstitute.For<ITwoFactorChallengeHandler>())) { var list = new List<IView>(); uiController.SelectFlow(UIControllerFlow.Clone) .Subscribe(uc => list.Add(uc as IView), () => { Assert.True(list.Count > 1); Assert.IsAssignableFrom<IViewFor<ILoginControlViewModel>>(list[0]); }); uiController.Start(null); } }
public void RunningNonAuthFlowWhenLoggedInRunsNonAuthFlow() { var provider = Substitutes.GetFullyMockedServiceProvider(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollectionEx <IConnection>(); cm.Connections.Returns(cons); cm.GetLoadedConnections().Returns(cons); // simulate being logged in cons.Add(SetupConnection(provider)); using (var uiController = new UIController((IGitHubServiceProvider)provider, factory, cm)) { var count = 0; var flow = uiController.Configure(UIControllerFlow.Clone); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <IRepositoryCloneViewModel> >(uc); TriggerCancel(data.View.ViewModel); break; } }); uiController.Start(); Assert.Equal(1, count); Assert.True(uiController.IsStopped); } }
// Start is called before the first frame update public static void Start() { Logger.InitializeLog(); CameraController.SetupCamera(); UIController.Start(); InputController.Start(); World.Start(); Lifeforms.Start(); }
public void ShowsGistDialog() { var provider = Substitutes.GetFullyMockedServiceProvider(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollectionEx <IConnection>(); cm.Connections.Returns(cons); cm.GetLoadedConnections().Returns(cons); // simulate being logged in cons.Add(SetupConnection(provider, true)); using (var uiController = new UIController((IGitHubServiceProvider)provider, factory, cm)) { var count = 0; bool?success = null; var flow = uiController.Configure(UIControllerFlow.Gist); uiController.ListenToCompletionState() .Subscribe(s => { success = s; Assert.Equal(1, count); count++; }); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <IGistCreationViewModel> >(uc); TriggerDone(data.View.ViewModel); break; default: Assert.True(false, "Received more views than expected"); break; } }, () => { Assert.Equal(2, count); count++; }); uiController.Start(); Assert.Equal(3, count); Assert.True(uiController.IsStopped); Assert.True(success.HasValue); Assert.True(success); } }
public void Start_ShouldChangeCurrentViewToStartingView() { // Given _uiController.startingView = View.Lobby; // When _uiController.Start(); // Then _changeCurrentView .Received() .Change(View.Lobby); }
public void AuthFlowWith2FA() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollection <IConnection>(); cm.Connections.Returns(cons); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm)) { var count = 0; var flow = uiController.SelectFlow(UIControllerFlow.Clone); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <ILoginControlViewModel> >(uc); var vm = factory.CreateViewAndViewModel(GitHub.Exports.UIViewType.TwoFactor).ViewModel; vm.IsShowing.Returns(true); RaisePropertyChange(vm, "IsShowing"); break; case 2: Assert.IsAssignableFrom <IViewFor <ITwoFactorDialogViewModel> >(uc); // login cons.Add(SetupConnection(provider, hosts, hosts.GitHubHost)); // continue by triggering done on login view var v = factory.CreateViewAndViewModel(GitHub.Exports.UIViewType.Login).View; TriggerDone(v); break; case 3: Assert.IsAssignableFrom <IViewFor <IRepositoryCloneViewModel> >(uc); TriggerCancel(uc); break; } }); uiController.Start(null); Assert.Equal(3, count); Assert.True(uiController.IsStopped); } }
public void AuthFlowWithout2FA() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollection <IConnection>(); cm.Connections.Returns(cons); using (var uiController = new UIController((IGitHubServiceProvider)provider, hosts, factory, cm)) { var count = 0; var flow = uiController.Configure(UIControllerFlow.Clone); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <ILoginControlViewModel> >(uc); // login cons.Add(SetupConnection(provider, hosts, hosts.GitHubHost)); TriggerDone(data.View.ViewModel); break; case 2: Assert.IsAssignableFrom <IViewFor <IRepositoryCloneViewModel> >(uc); TriggerCancel(data.View.ViewModel); break; } }); uiController.Start(); Assert.Equal(2, count); Assert.True(uiController.IsStopped); } }
public void BackAndForth() { var provider = Substitutes.GetFullyMockedServiceProvider(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollectionEx <IConnection>(); cm.Connections.Returns(cons); cm.GetLoadedConnections().Returns(cons); using (var uiController = new UIController((IGitHubServiceProvider)provider, factory, cm)) { var count = 0; var flow = uiController.Configure(UIControllerFlow.Clone); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: { Assert.IsAssignableFrom <IViewFor <ILoginControlViewModel> >(uc); var vm = (IDialogViewModel)factory.CreateViewAndViewModel(GitHub.Exports.UIViewType.TwoFactor).ViewModel; vm.IsShowing.Returns(true); RaisePropertyChange(vm, "IsShowing"); break; } case 2: { Assert.IsAssignableFrom <IViewFor <ITwoFactorDialogViewModel> >(uc); var vm = (IDialogViewModel)factory.CreateViewAndViewModel(GitHub.Exports.UIViewType.TwoFactor).ViewModel; vm.IsShowing.Returns(false); RaisePropertyChange(vm, "IsShowing"); TriggerCancel(data.View.ViewModel); break; } case 3: { Assert.IsAssignableFrom <IViewFor <ILoginControlViewModel> >(uc); var vm = (IDialogViewModel)factory.CreateViewAndViewModel(GitHub.Exports.UIViewType.TwoFactor).ViewModel; vm.IsShowing.Returns(true); RaisePropertyChange(vm, "IsShowing"); break; } case 4: { Assert.IsAssignableFrom <IViewFor <ITwoFactorDialogViewModel> >(uc); // login cons.Add(SetupConnection(provider)); var vm2 = factory.CreateViewAndViewModel(GitHub.Exports.UIViewType.Login).ViewModel; TriggerDone(vm2); break; } case 5: { Assert.IsAssignableFrom <IViewFor <IRepositoryCloneViewModel> >(uc); uiController.Stop(); break; } } }); uiController.Start(); Assert.Equal(5, count); Assert.True(uiController.IsStopped); } }
public void ShuttingDown() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollection <IConnection>(); cm.Connections.Returns(cons); // simulate being logged in cons.Add(SetupConnection(provider, hosts, hosts.GitHubHost)); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm)) { var count = 0; bool?success = null; var flow = uiController.SelectFlow(UIControllerFlow.PullRequests); uiController.ListenToCompletionState() .Subscribe(s => { success = s; Assert.Equal(4, count); count++; }); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <IPullRequestListViewModel> >(uc); ((ReplaySubject <ViewWithData>)((IHasDetailView)uc).Open).OnNext( new ViewWithData { Flow = UIControllerFlow.PullRequests, ViewType = GitHub.Exports.UIViewType.PRDetail, Data = 1 }); break; case 2: Assert.IsAssignableFrom <IViewFor <IPullRequestDetailViewModel> >(uc); TriggerDone(uc); break; case 3: Assert.IsAssignableFrom <IViewFor <IPullRequestListViewModel> >(uc); ((ReplaySubject <ViewWithData>)((IHasDetailView)uc).Open).OnNext( new ViewWithData { Flow = UIControllerFlow.PullRequests, ViewType = GitHub.Exports.UIViewType.PRDetail, Data = 1 }); break; case 4: Assert.IsAssignableFrom <IViewFor <IPullRequestDetailViewModel> >(uc); uiController.Stop(); break; } }, () => { Assert.Equal(5, count); count++; }); uiController.Start(null); Assert.Equal(6, count); Assert.True(uiController.IsStopped); Assert.True(success.HasValue); Assert.True(success); } }
public void ShowingGistDialogWhenGistNotSupportedShowsLogoutDialog() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var cm = provider.GetConnectionManager(); var cons = new ObservableCollection <IConnection>(); cm.Connections.Returns(cons); var host = hosts.GitHubHost; // simulate being logged in cons.Add(SetupConnection(provider, hosts, host, true, false)); using (var uiController = new UIController((IGitHubServiceProvider)provider, hosts, factory, cm)) { var count = 0; bool?success = null; var flow = uiController.Configure(UIControllerFlow.Gist); uiController.ListenToCompletionState() .Subscribe(s => { success = s; Assert.Equal(3, count); count++; }); flow.Subscribe(data => { var uc = data.View; switch (++count) { case 1: Assert.IsAssignableFrom <IViewFor <ILogoutRequiredViewModel> >(uc); host.IsLoggedIn.Returns(false); TriggerDone(uc); break; case 2: Assert.IsAssignableFrom <IViewFor <ILoginControlViewModel> >(uc); // login host.IsLoggedIn.Returns(true); host.SupportsGist.Returns(true); TriggerDone(uc); break; case 3: Assert.IsAssignableFrom <IViewFor <IGistCreationViewModel> >(uc); TriggerDone(uc); break; default: Assert.True(false, "Received more views than expected"); break; } }, () => { Assert.Equal(4, count); count++; }); uiController.Start(); Assert.Equal(5, count); Assert.True(uiController.IsStopped); Assert.True(success.HasValue); Assert.True(success); } }
public void ShowingCloneDialogWhenLoggedInShowsCloneDialog() { var provider = Substitutes.GetFullyMockedServiceProvider(); var hosts = provider.GetRepositoryHosts(); var factory = SetupFactory(provider); var connection = provider.GetConnection(); connection.Login().Returns(Observable.Return(connection)); var cm = provider.GetConnectionManager(); var host = hosts.GitHubHost; hosts.LookupHost(connection.HostAddress).Returns(host); host.IsLoggedIn.Returns(true); using (var uiController = new UIController((IUIProvider)provider, hosts, factory, cm, LazySubstitute.For<ITwoFactorChallengeHandler>())) { var list = new List<IView>(); uiController.SelectFlow(UIControllerFlow.Clone) .Subscribe(uc => list.Add(uc as IView), () => { Assert.Equal(1, list.Count); Assert.IsAssignableFrom<IViewFor<IRepositoryCloneViewModel>>(list[0]); }); uiController.Start(connection); } }