コード例 #1
1
        public void ObserverShouldOnlyReceiveSubscribedNotifications()
        {
            // Arrange

            var eventAggregator = new EventAggregator();
            var observer1 = new Mock<IObserve<TestEvent>>();
            var observer2 = new Mock<IObserve<OtherEvent>>();

            eventAggregator.Subscribe(observer1.Object);
            eventAggregator.Subscribe(observer2.Object);

            var testEvent = new TestEvent();
            var otherEvent = new OtherEvent();

            // Act

            eventAggregator.Publish(testEvent);
            eventAggregator.Publish(otherEvent);

            // Assert

            observer1.Verify(x => x.OnNext(It.IsAny<IEvent>()), Times.Once);
            observer1.Verify(x => x.OnNext(testEvent), Times.Once);
            observer2.Verify(x => x.OnNext(otherEvent), Times.Once);
        }
コード例 #2
0
ファイル: App.xaml.cs プロジェクト: SoulForging/CoolBlue
        public App()
        {
            try
            {
                IUnityContainer unityContainer = new UnityContainer();

                var connectionString = System.Configuration.ConfigurationSettings.AppSettings.Get("webService");
                IWebservice webService = new Webservice(connectionString);

                EventAggregator eventAggregator = new EventAggregator();
                unityContainer.RegisterInstance<IEventAggregator>(eventAggregator);
                unityContainer.RegisterInstance<IWebservice>(webService);

                IMessaging emailMessenger = new EmailMessaging();
                unityContainer.RegisterInstance<IMessaging>(emailMessenger);

                var regionManager = new RegionManager();
                regionManager.Regions.Add(new Region() { Name = "MainContentRegion" });
                unityContainer.RegisterInstance<IRegionManager>(regionManager);

                ServiceLocator.SetLocatorProvider(() => new UnityServiceLocator(unityContainer));

            }
            catch (Exception ex)
            {
                logger.Error("Error in app constructor", ex);
            }
        }
コード例 #3
0
        public void a_published_message_is_received_by_multiple_subscribers()
        {
            // When the bus publishes a message, it is sent through the socket
            var consumer = new ZeroConsumer<Message>("tcp://localhost:5562");
            var bus = new BusAdapter();
            bus.AttachConsumer(consumer);

            // Meanwhile, the aggregator waits for messages from the same socket
            var producer = new ZeroProducer<Message>("tcp://*:5562");
            var aggregator = new EventAggregator<Message>();
            aggregator.AttachTo(producer);

            // While two test consumers are subscribed to the aggregator
            // (the syntax looks like it's the other way around)
            var confirmById = new FakeEventConsumer();
            var confirmAsReceived = new TestConsumer();
            aggregator.SubscribeTo(confirmById);
            aggregator.SubscribeTo(confirmAsReceived);

            // When we drop a message on the bus, the test consumer should get it
            var @event = new FakeEvent();
            bus.Publish(@event);

            // Pause the thread so the producer (via aggregator) can send to the test consumer
            var timeout = TimeSpan.FromSeconds(1).TotalMilliseconds;
            Thread.Sleep((int)timeout);

            Assert.IsTrue(confirmAsReceived.Received);
            Assert.AreEqual(@event.Id, confirmById.Id);

            producer.Dispose();
            consumer.Dispose();
        }
コード例 #4
0
 protected override void Given()
 {
     eventAggregator = new EventAggregator();
     view = new Mock<ITerritoryStatsView>();
     territoryStats = new TerritoryStatsPresentationModel(
         view.Object, eventAggregator);
 }
コード例 #5
0
        public ActivityFinderPopupViewModel(BcontrolDataHandler datahandler,C1DataGrid searchGrid)
        {
            eventaggregator = EventAggregator.Instance;
            IsVisible = false;
            _datahandler = datahandler;
            _datahandler.SearchInitialDataRetrieved += new EventHandler<GetSearchInitialDataCompletedEventArgs>(bcontrolDataHandler_SearchInitialDataRetrieved);
            _datahandler.SearchByMapListRetrieved +=new EventHandler<GetSearchMapListCompletedEventArgs>(bcontrolDatahandler_SearchByMapListRetrieved);
            _datahandler.SearchByGlobalHeadListRetrieved += new EventHandler<GetSearchGlobalHeadListCompletedEventArgs>(bcontrolDatahandler_SearchByGlobalHeadListRetrieved);
            _datahandler.SearchByGlobalFunctionListRetrieved += new EventHandler<GetSearchGlobalFunctionListCompletedEventArgs>(bcontrolDatahandler_SearchByGlobalFunctionListRetrieved);
            _datahandler.SearchByBusinessAreaListRetrieved += new EventHandler<GetSearchBusinessAreaListCompletedEventArgs>(bcontrolDatahandler_SearchByBusinessAreaListRetrieved);
            _datahandler.SearchByBusinessFunctionListRetrieved += new EventHandler<GetSearchBusinessFunctionListCompletedEventArgs>(bcontrolDatahandler_SearchByBusinessFunctionListRetrieved);
            _datahandler.SearchBySubFunctionListRetrieved += new EventHandler<GetSearchSubFunctionListCompletedEventArgs>(bcontrolDatahandler_SearchByBusinessSubFunctionListRetrieved);

            _datahandler.SearchByLevelDataRetrieved += new EventHandler<GetSearchResultsBylevelCompletedEventArgs>(bcontrolDataHandler_SearchByLevelDataRetrieved);
            _datahandler.SearchByHierarchyDataRetrieved += new EventHandler<GetSearchResultsByHierarchyCompletedEventArgs>(bcontrolDataHandler_SearchByHierarchyDataRetrieved);
            _datahandler.DiagramTemplateLinkRetrieved += new EventHandler<GetDiagramTemplateLinkCompletedEventArgs>(bcontrolDataHandler_DiagramTemplateLinkRetrieved);
            _datahandler.ExisitingActivitiesRetrieved +=new EventHandler<GetExisitingActivitiesCompletedEventArgs>(bcontrolDatahandler_ExisitingActivitiesRetrieved);            

            _isModifiedLinks = false;
         
            _searchResultsList = new ObservableCollection<ActivitySet>();
            _datahandler.GetDiagramTemplateLink();

            ErrorMessage = "";

            _searchGrid = searchGrid;
        }              
コード例 #6
0
ファイル: App.xaml.cs プロジェクト: CNinnovation/WPFWorkshop
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            RegisterServices();
            EventAggregator = new EventAggregator();
        }
コード例 #7
0
        public UploadReportHierarchyViewModel(StringBuilder log, C1DataGrid grid, BcontrolDataHandler bcontrolDataHandler)
        {
            eventaggregator = EventAggregator.Instance;
            _log = log;
            _grid = grid;

            PreviewCommand = new RelayCommand(PreviewAction);
            PreviewCommand.IsEnabled = false;
            UploadCommand = new RelayCommand(UploadAction);
            UploadCommand.IsEnabled = false;

            CloseCommand = new RelayCommand(CloseAction);
            CloseCommand.IsEnabled = true;

            _datahandler = bcontrolDataHandler;

            _datahandler.ClearBcontrolHierarchyDataRetrieved += new EventHandler<ClearBcontrolHierarchyDataCompletedEventArgs>(_datahandler_ClearBcontrolHierarchyDataRetrieved);
            _datahandler.AddBcontrolHierarchyDataRetrieved += new EventHandler<AddBcontrolHierarchyDataCompletedEventArgs>(_datahandler_AddBcontrolHierarchyDataRetrieved);
            _datahandler.CompleteAddBcontrolHierarchyDataRetrieved += new EventHandler<CompleteAddBcontrolHierarchyDataCompletedEventArgs>(_datahandler_CompleteAddBcontrolHierarchyDataRetrieved);

            _columns = new Dictionary<string, ReportField>();
            
            _columns.Add("Map Name", new ReportField(100, true));
            _columns.Add("Level", new ReportField(500, true));
            _columns.Add("FunctionalHead", new ReportField(50, false));
            _columns.Add("AdditionalData", new ReportField(100, false));
            _columns.Add("TOM", new ReportField(100, false));
            _columns.Add("REN", new ReportField(100, false));
            _columns.Add("Bcontrol Function Structure", new ReportField(100, false));
            _columns.Add("Taxonomy Level 3", new ReportField(100, false));
            _columns.Add("BusinessHierarchy1", new ReportField(100, false));
            _columns.Add("BusinessHierarchy2", new ReportField(100, false));
            _columns.Add("BusinessHierarchy3", new ReportField(100, false));

        }
コード例 #8
0
ファイル: SolverBehavior.cs プロジェクト: powerdude/sudoque
        public void ShouldPassOnTheHintFromTheFirstHelpfulRule()
        {
            // Given an event aggregator to which we're subscribed
            var events = new EventAggregator();
            Hint hint = null;
            events.GetEvent<HintProvidedEvent>().Subscribe(h => hint = h);

            // And one rule which fails then one which passes first time
            var unhelpfulRule = new Mock<IMightBeAbleToHelp>();
            unhelpfulRule.Setup(r => r.HelpWith(It.IsAny<NineCells>())).Returns(Hint.None);

            var expectedHint = new Hint("I can help!", new List<Cell>());
            var helpfulRule = new Mock<IMightBeAbleToHelp>();
            helpfulRule.Setup(r => r.HelpWith(It.IsAny<NineCells>())).Returns(expectedHint);

            // And a repository with some cells in it
            var repository = new Mock<ILookAfterCells>();
            repository.Setup(r => r.FetchCellsByRowColumnOrNiner()).Returns(
                new List<NineCells> {new NineCells(new Cell[0])});

            // When we publish a request for a hint
            new Solver(events, repository.Object, new[] {unhelpfulRule.Object, helpfulRule.Object});
            events.GetEvent<HintRequestEvent>().Publish(null);

            // Then the solver should publish the first helpful hint
            Assert.AreEqual(expectedHint, hint);
        }
コード例 #9
0
        public void A_valid_message_invokes_HandlerResultProcessing_when_expected_to() {
            var eventAggregator = new EventAggregator();
            var coroutineHandlerMock = new Mock<IHandleWithCoroutine<object>>();
            var taskHandlerMock = new Mock<IHandleWithTask<object>>();
            var coroutineHandlerProcessed = false;
            var taskHandlerProcessed = false;

            coroutineHandlerMock.Setup(handlerStub => handlerStub.Handle(It.IsAny<object>()))
                                .Returns(() => new List<IResult>());

            taskHandlerMock.Setup(handlerStub => handlerStub.Handle(It.IsAny<object>()))
                           .Returns(() => new Task(() => { }));

            EventAggregator.HandlerResultProcessing = (target, result) => {

                if (target is IHandleWithCoroutine<object>) {
                    coroutineHandlerProcessed = true;
                }
                else if (target is IHandleWithTask<object>) {
                    taskHandlerProcessed = true;
                }
            };

            eventAggregator.Subscribe(coroutineHandlerMock.Object);
            eventAggregator.Subscribe(taskHandlerMock.Object);
            eventAggregator.Publish(new object());

            Assert.True(coroutineHandlerProcessed);
            Assert.True(taskHandlerProcessed);
        }
コード例 #10
0
        public void TryGetEventHandler_should_return_false_when_no_subscribers_exist()
        {
            var subject = new EventAggregator();

            Action<int> handler;
            subject.TryGetEventHandler(out handler).Should().BeFalse();
        }
コード例 #11
0
ファイル: SolverBehavior.cs プロジェクト: powerdude/sudoque
        public void ShouldAskEachRuleInTurnWithNinersRowsAndColumnsUntilOnePasses()
        {
            // Given a repository with different rows, columns and niners
            var niners = new List<NineCells> { new NineCells( new[] {new Cell(new CellId(-1, -1)) } )};
            var rows = new List<NineCells> { new NineCells( new[] {new Cell(new CellId(-1, -1)) } )};
            var columns = new List<NineCells>
                              {
                                  new NineCells(new[] {new Cell(new CellId(-1, -1))} ),
                                  new NineCells(new[] {new Cell(new CellId(-1, -1))} ),
                                  new NineCells(new[] {new Cell(new CellId(-1, -1))} ),
                              };

            var repository = new Mock<ILookAfterCells>();
            var allSequences = new[] {niners, rows, columns}.SelectMany(list => list).ToArray();
            repository.Setup(r => r.FetchCellsByRowColumnOrNiner()).Returns(allSequences);

            // And one rule which fails then one which passes first time
            var unhelpfulRule = new Mock<IMightBeAbleToHelp>();
            unhelpfulRule.Setup(r => r.HelpWith(It.IsAny<NineCells>())).Returns(Hint.None);

            var expectedHint = new Hint("I can help!", new List<Cell>());
            var helpfulRule = new Mock<IMightBeAbleToHelp>();
            helpfulRule.Setup(r => r.HelpWith(It.IsAny<NineCells>())).Returns(expectedHint);

            // When we ask the solver for a hint
            var events = new EventAggregator();
            new Solver(events, repository.Object, new[] {unhelpfulRule.Object, helpfulRule.Object});
            events.GetEvent<HintRequestEvent>().Publish(null);

            // Then the first rule should be called with each niner, row and column
            Array.ForEach(allSequences, s => unhelpfulRule.Verify(r => r.HelpWith(s)));

            // And the second should only be called once
            helpfulRule.Verify(r => r.HelpWith(It.IsAny<NineCells>()), Times.Once());
        }
コード例 #12
0
        public async Task Navigate_To_Subsequent_Page_Back_Button_Visible()
        {
            await DispatcherHelper.ExecuteOnUIThread(() =>
            {
                var eventAggregator = new EventAggregator();
                var frame = new FrameFacadeAdapter(new Frame(), eventAggregator);
                var sessionStateService = new MockSessionStateService();
                sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>();
                var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService);
                var deviceGestureService = new DeviceGestureService(eventAggregator);
                deviceGestureService.UseTitleBarBackButton = true;
                var navigationManager = SystemNavigationManager.GetForCurrentView();

                // Reset back button visibility before running, can't do this in TestInitialize because CoreWindow sometimes isn't ready
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;

                Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility);

                navigationService.Navigate("Mock", 1);

                Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility);

                navigationService.Navigate("Mock", 2);

                Assert.AreEqual(AppViewBackButtonVisibility.Visible, navigationManager.AppViewBackButtonVisibility);
            });
        }
コード例 #13
0
        public async Task Navigate_Raises_NavigationStateChangedEvent()
        {
            var tcs = new TaskCompletionSource<bool>();
            var eventAggregator = new EventAggregator();

            eventAggregator.GetEvent<NavigationStateChangedEvent>().Subscribe((args) => tcs.SetResult(args.StateChange == StateChangeType.Forward));

            await DispatcherHelper.ExecuteOnUIThread(() =>
            {
                var frame = new FrameFacadeAdapter(new Frame(), eventAggregator);
                var sessionStateService = new MockSessionStateService();
                sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>();
                var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService);

                navigationService.Navigate("Mock", 1);
            });

            await Task.WhenAny(tcs.Task, Task.Delay(200));

            if (tcs.Task.IsCompleted)
            {
                Assert.IsTrue(tcs.Task.Result);
            }
            else
            {
                Assert.Fail("NavigationStateChangedEvent event wasn't raised within 200 ms.");
            }
        }
コード例 #14
0
ファイル: ServiceFactoryBase.cs プロジェクト: xbadcode/Rubezh
		static ServiceFactoryBase()
		{
			Events = new EventAggregator();
			ResourceService = new ResourceService();
			DialogService = new RealDialogService();
			MessageBoxService = new RealMessageBoxService();
		}
コード例 #15
0
 public MainViewModel()
 {
     var events = new EventAggregator();
     var config = new Configuration(events: events).WithCss().WithDefaultLoader(m => 
     {
         m.IsNavigationEnabled = true;
         m.IsResourceLoadingEnabled = true;
     });
     context = BrowsingContext.New(config);
     profiler = new ProfilerViewModel(events);
     errors = new ErrorsViewModel(events);
     dom = new DOMViewModel();
     query = new QueryViewModel();
     repl = new ReplViewModel();
     settings = new SettingsViewModel();
     statistics = new StatisticsViewModel();
     tree = new TreeViewModel();
     sheets = new SheetViewModel();
     cts = new CancellationTokenSource();
     views = new ITabViewModel[] 
     {
         dom,
         query,
         repl,
         statistics,
         tree,
         sheets
     };
     logs = new IEventViewModel[]
     {
         profiler,
         errors
     };
 }
コード例 #16
0
        static void Main(string[] args)
        {
            UnityContainer container = new UnityContainer();
            container.RegisterInstance<IServiceLocator>(new UnityServiceLocatorAdapter(container));

            container.RegisterType<IModuleInitializer, ModuleInitializer>();

            TextLogger logger = new TextLogger();
            container.RegisterInstance<ILoggerFacade>(logger);

            IEventAggregator eventAggregator = new EventAggregator();
            container.RegisterInstance<IEventAggregator>(eventAggregator);

            ModuleCatalog catalog = new ModuleCatalog();
            //catalog.AddModule(typeof(RFID.RFIDModule));
            catalog.AddModule(typeof(BookInformation.BookInformationModule));
            catalog.AddModule(typeof(BookLocation.BookLocationModule));
            container.RegisterInstance<IModuleCatalog>(catalog);

            container.RegisterType<IModuleManager, ModuleManager>();
            IModuleManager manager = container.Resolve<IModuleManager>();
            manager.Run();
            //测试RFID服务模块的功能
            //RFIDUnitTest.testRFID(container);
            /******/
            //测试串口服务的功能
            //SerialUnitTest.testSerial(container);
            //测试数据库功能
            DatabaseUnitTest.testAllDatabase(container);
        }
コード例 #17
0
ファイル: Program.cs プロジェクト: andyste1/SignalR.PubSub
        public static void Main(string[] args)
        {
            // Create the Prism event aggregator.
            var prismEventAggregator = new EventAggregator();

            // If you get an access denied error when running the demo, try this command line:
            //     netsh http add urlacl url=http://+:8700/MyUri user=DOMAIN\user
            const string Url = "http://+:8700/";

            // Register shims before WebApp.Start(). This ensures that the library's internal
            // Hub is visible to the SignalR server.
            PubSubSignalRServer.RegisterShims(new[]
                                          {
                                              new PrismEventAggregatorShim(prismEventAggregator), 
                                          });

            using (WebApp.Start<OwinConfig>(Url))
            {
                // Fire up the test BLL that will use the event service to broadcast to client.
                var myBusinessLogic = new MyBusinessLogic(prismEventAggregator);

                Console.WriteLine("Server started. Press any key to stop...");
                Console.ReadKey();
            }
        }
コード例 #18
0
ファイル: Position.cs プロジェクト: tvannuland/AlgoLifter
 public Position()
 {
     RemoveFromCollectionCommand = new DelegateCommand(RemoveFromCollection);
     GoToPositionCommand = new DelegateCommand(GoToPosition);
     ea = ServiceLocator.Current.GetInstance<EventAggregator>();
     ea.GetEvent<NewMicrostepResolutionEvent>()
         .Subscribe(onMicrostepResolutionChanged, ThreadOption.BackgroundThread);
 }
コード例 #19
0
 public QuoteGridViewModel()
 {
     
     this._gridList = new QuoteGridList();
     _quoteupdateservice = ServiceLocator.Current.GetInstance<IQuoteUpdateService>() as QuoteUpdateService;
     _eventaggregator = ServiceLocator.Current.GetInstance<EventAggregator>();
     _quoteupdateservice.GridViewModel = this;
 }
コード例 #20
0
		public PluginRuntime(IPluginPersister pluginPersister, EventAggregator eventAggregator, ITpBus bus)
		{
			_pluginPersister = pluginPersister;
			_eventAggregator = eventAggregator;
			_bus = bus;
			_eventAggregator.Get<Event<AccountCollectionCreated>>().Subscribe(OnAccountCollectionCreated);
			_eventAggregator.Get<Event<ProfileChanged>>().Subscribe(OnProfileChanged);
		}
コード例 #21
0
        public void Setup()
        {
            _mockProducerBoundary = new Mock<SearchPlayersProducerBoundary>();
            _mockConsumerBoundary = new Mock<SearchPlayersConsumerBoundary>();
            _eventAggregator = new EventAggregatorImp();

            _controller = new SearchPlayersController(_eventAggregator, _mockProducerBoundary.Object, _mockConsumerBoundary.Object);
        }
コード例 #22
0
        public void TryGetEventHandler_should_return_true_when_one_subscriber_exists()
        {
            var subject = new EventAggregator();
            subject.Subscribe<int>(x => { });

            Action<int> handler;
            subject.TryGetEventHandler(out handler).Should().BeTrue();
        }
コード例 #23
0
        public SearchPlayersController(EventAggregator eventAggregator, SearchPlayersProducerBoundary producerBoundary, SearchPlayersConsumerBoundary consumerBoundary)
        {
            _eventAggregator = eventAggregator;
            _producerBoundary = producerBoundary;
            _consumerBoundary = consumerBoundary;

            _eventAggregator.Subscribe<SearchPlayersRequest>(HandleSearchPlayersRequest);
        }
コード例 #24
0
        public void GetReturnsSingleInstancesOfSameEventType()
        {
            var eventAggregator = new EventAggregator();
            var instance1 = eventAggregator.GetEvent<MockEventBase>();
            var instance2 = eventAggregator.GetEvent<MockEventBase>();

            Assert.AreSame(instance2, instance1);
        }
コード例 #25
0
        public void SetUp()
        {
            recordingLogger = new RecordingLogger();

            events = new EventAggregator(() => recordingLogger, new IListener[0]);

            handler = new StubMessage1Handler();
            events.AddListener(handler);
        }
コード例 #26
0
 public static void Main(string[] args)
 {
     Application.Init ();
     EventAggregator appEvents = new EventAggregator ();
     CalculatorStateManager stateManager = new CalculatorStateManager (appEvents);
     MainWindow win = new MainWindow (appEvents);
     win.Show ();
     Application.Run ();
 }
コード例 #27
0
ファイル: ServiceFactory.cs プロジェクト: hjlfmy/Rubezh
 public static void Initialize(ILayoutService ILayoutService, ISecurityService ISecurityService)
 {
     Events = new EventAggregator();
     ResourceService = new ResourceService();
     Layout = ILayoutService;
     SecurityService = ISecurityService;
     LoginService = new LoginService(ClientType.Monitor, "Оперативная задача. Авторизация.");
     SubscribeEvents();
 }
コード例 #28
0
		public void Should_send_message()
		{
			var someMessageHandler = new SomeMessageHandler();
			var eventAggregator = new EventAggregator();

			eventAggregator.AddListener(someMessageHandler);
			eventAggregator.SendMessage<SomeMessage>();
			someMessageHandler.EventsTrapped.Count().ShouldEqual(1);
		}
コード例 #29
0
ファイル: ServiceFactory.cs プロジェクト: saeednazari/Rubezh
		public static void Initialize(ILayoutService ILayoutService, ISecurityService ISecurityService)
		{
			ServiceFactoryBase.Events = Events = new EventAggregator();
			ServiceFactoryBase.SecurityService = SecurityService = ISecurityService;
			ResourceService = new ResourceService();
			Layout = ILayoutService;
			LoginService = new LoginService(ClientType.Monitor, "Оперативная задача. Авторизация.");
			ContentService = new ContentService("Monitor");
		}
コード例 #30
0
 public void BringDynamicPanelIntoView <TViewModel>(TViewModel viewModel)
 {
     viewModel.AssertNotNull(nameof(viewModel));
     EventAggregator.GetEvent <BringDynamicPanelIntoViewRequest>().Publish(new BringDynamicPanelIntoViewArgs(typeof(TViewModel), viewModel));
 }
コード例 #31
0
 public void BringStaticPanelIntoView <TViewModel>()
 {
     EventAggregator.GetEvent <BringStaticPanelIntoViewRequest>().Publish(new BringStaticPanelIntoViewArgs(typeof(TViewModel)));
 }
コード例 #32
0
 private void OnChangeImage()
 {
     EventAggregator.GetEvent <ImageChangeRequestedEvent>().Publish(null);
 }
コード例 #33
0
 public void GotoConnectionSetup()
 {
     EventAggregator.PublishOnUIThread(new ChangeMainModeEvent(MainMode.ConnectionSetup));
 }
コード例 #34
0
        public ClientManager(
            NetClient netClient,
            ServerManager serverManager,
            PacketManager packetManager,
            UiManager uiManager,
            Settings.GameSettings gameSettings,
            ModSettings modSettings
            )
        {
            _netClient     = netClient;
            _serverManager = serverManager;
            _uiManager     = uiManager;
            _gameSettings  = gameSettings;
            _modSettings   = modSettings;

            _playerData = new Dictionary <ushort, ClientPlayerData>();

            _playerManager    = new PlayerManager(packetManager, gameSettings, _playerData);
            _animationManager = new AnimationManager(netClient, _playerManager, packetManager, gameSettings);
            _mapManager       = new MapManager(netClient, gameSettings);

            _entityManager = new EntityManager(netClient);

            new PauseManager(netClient).RegisterHooks();

            _commandManager = new ClientCommandManager();
            var eventAggregator = new EventAggregator();

            RegisterCommands();

            var clientApi = new ClientApi(this, _commandManager, uiManager, netClient, eventAggregator);

            _addonManager = new ClientAddonManager(clientApi);

            ModHooks.FinishedLoadingModsHook += _addonManager.LoadAddons;

            // Check if there is a valid authentication key and if not, generate a new one
            if (!AuthUtil.IsValidAuthKey(modSettings.AuthKey))
            {
                modSettings.AuthKey = AuthUtil.GenerateAuthKey();
            }

            // Then authorize the key on the locally hosted server
            serverManager.AuthorizeKey(modSettings.AuthKey);

            // Register packet handlers
            packetManager.RegisterClientPacketHandler <HelloClient>(ClientPacketId.HelloClient, OnHelloClient);
            packetManager.RegisterClientPacketHandler <ServerClientDisconnect>(ClientPacketId.ServerClientDisconnect,
                                                                               OnDisconnect);
            packetManager.RegisterClientPacketHandler <PlayerConnect>(ClientPacketId.PlayerConnect, OnPlayerConnect);
            packetManager.RegisterClientPacketHandler <ClientPlayerDisconnect>(ClientPacketId.PlayerDisconnect,
                                                                               OnPlayerDisconnect);
            packetManager.RegisterClientPacketHandler <ClientPlayerEnterScene>(ClientPacketId.PlayerEnterScene,
                                                                               OnPlayerEnterScene);
            packetManager.RegisterClientPacketHandler <ClientPlayerAlreadyInScene>(ClientPacketId.PlayerAlreadyInScene,
                                                                                   OnPlayerAlreadyInScene);
            packetManager.RegisterClientPacketHandler <GenericClientData>(ClientPacketId.PlayerLeaveScene,
                                                                          OnPlayerLeaveScene);
            packetManager.RegisterClientPacketHandler <PlayerUpdate>(ClientPacketId.PlayerUpdate, OnPlayerUpdate);
            packetManager.RegisterClientPacketHandler <EntityUpdate>(ClientPacketId.EntityUpdate, OnEntityUpdate);
            packetManager.RegisterClientPacketHandler <GameSettingsUpdate>(ClientPacketId.GameSettingsUpdated,
                                                                           OnGameSettingsUpdated);
            packetManager.RegisterClientPacketHandler <ChatMessage>(ClientPacketId.ChatMessage, OnChatMessage);

            // Register handlers for events from UI
            uiManager.ConnectInterface.ConnectButtonPressed     += Connect;
            uiManager.ConnectInterface.DisconnectButtonPressed  += () => Disconnect();
            uiManager.SettingsInterface.OnTeamRadioButtonChange += InternalChangeTeam;
            uiManager.SettingsInterface.OnSkinIdChange          += InternalChangeSkin;

            UiManager.InternalChatBox.ChatInputEvent += OnChatInput;

            netClient.ConnectEvent       += response => uiManager.OnSuccessfulConnect();
            netClient.ConnectFailedEvent += uiManager.OnFailedConnect;

            // Register the Hero Controller Start, which is when the local player spawns
            On.HeroController.Start += (orig, self) => {
                // Execute the original method
                orig(self);
                // If we are connect to a server, add a username to the player object
                if (netClient.IsConnected)
                {
                    _playerManager.AddNameToPlayer(
                        HeroController.instance.gameObject,
                        _username,
                        _playerManager.LocalPlayerTeam
                        );
                }
            };

            // Register handlers for scene change and player update
            UnityEngine.SceneManagement.SceneManager.activeSceneChanged += OnSceneChange;
            On.HeroController.Update += OnPlayerUpdate;

            // Register client connect and timeout handler
            netClient.ConnectEvent += OnClientConnect;
            netClient.TimeoutEvent += OnTimeout;

            // Register application quit handler
            ModHooks.ApplicationQuitHook += OnApplicationQuit;
        }
コード例 #35
0
 protected override void OnInitialized()
 {
     base.OnInitialized();
     EventAggregator.Subscribe(this);
 }
コード例 #36
0
 public override void RunEffect()
 {
     EventAggregator.PublishT(GameEvent.AddTime, this, (int)Duration);
 }
コード例 #37
0
 public MovementEditorViewModel(IBusyService busyService, IUnityContainer container, IMessageBoxService messageBoxService, IDesktopKeyEventHandler keyEventHandler, EventAggregator eventAggregator)
     : base(busyService, container)
 {
     this.eventAggregator        = eventAggregator;
     this.messageBoxService      = messageBoxService;
     this.desktopKeyEventHandler = keyEventHandler;
     InitializeCommands();
     this.eventAggregator.GetEvent <EditMovementEvent>().Subscribe(this.LoadMovement);
     this.eventAggregator.GetEvent <FinishedAbilityCollectionRetrievalEvent>().Subscribe(this.LoadReferenceResource);
     this.eventAggregator.GetEvent <AttackInitiatedEvent>().Subscribe(this.AttackInitiated);
     this.eventAggregator.GetEvent <AttackExecutionsFinishedEvent>().Subscribe(this.AttackEnded);
     this.eventAggregator.GetEvent <PlayMovementConfirmedEvent>().Subscribe(this.PlayMovement);
     this.eventAggregator.GetEvent <StopMovementEvent>().Subscribe(this.StopMovement);
     // Unselect everything at the beginning
     this.InitializeMovementSelections();
     this.InitializeDesktopKeyEventHandlers();
 }
コード例 #38
0
 public void PublishChanged()
 {
     EventAggregator.GetEvent <AccountChangedEvent>().Publish(this);
 }
コード例 #39
0
        void _client_OnTradeUpdated(PTEntity.TradeUpdate obj)
        {
            string info = string.Format("trade: {0}\t{1}\t{2}", obj.InstrumentID, obj.Price, obj.TradeTime);

            EventAggregator.GetEvent <TradeUpdatedEvent>().Publish(obj);
        }
コード例 #40
0
 public PublishEventHandler(EventAggregator event_aggregator, RegionManager regionManager)
 {
     this.event_aggregator = event_aggregator;
     region_manager        = regionManager;
 }
コード例 #41
0
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="container"></param>
 public LoginWindowViewModel(IContainerExtension container) : base(container)
 {
     EventAggregator.GetEvent <MainWindowLoadingEvent>().Subscribe(e => IsLoading = e);
     EventAggregator.GetEvent <SignUpSuccessEvent>().Subscribe(signUpInfo => SignInTabItem.IsSelected = true);
 }
コード例 #42
0
        public void Done()
        {
            var proxyConfig = _transportService.GetProxyConfig() as TLProxyConfig76 ?? TLProxyConfigBase.Empty as TLProxyConfig76;

            if (proxyConfig == null)
            {
                return;
            }
            if (!IsDoneEnabled)
            {
                return;
            }

            if (IsSocks5Proxy)
            {
                TLSocks5Proxy proxy = null;
                // new proxy
                if (_proxy == null)
                {
                    proxy = new TLSocks5Proxy {
                        CustomFlags = new TLLong(0)
                    };
                    proxy.Server = new TLString(Server);
                    var port = 0;
                    proxy.Port     = int.TryParse(Port, out port) ? new TLInt(port) : new TLInt(0);
                    proxy.Username = new TLString(Username);
                    proxy.Password = new TLString(Password);

                    _proxy = proxy;
                    proxyConfig.Items.Add(_proxy);
                    proxyConfig.SelectedIndex = new TLInt(proxyConfig.Items.IndexOf(_proxy));
                    proxyConfig.IsEnabled     = TLBool.True;

                    _transportService.SetProxyConfig(proxyConfig);
                    _transportService.Close();
                    MTProtoService.PingAsync(TLLong.Random(), result => { });

                    EventAggregator.Publish(new ProxyChangedEventArgs(proxyConfig));
                    NavigationService.GoBack();

                    return;
                }

                proxy = _proxy as TLSocks5Proxy;
                // change type
                if (proxy == null)
                {
                    proxy = new TLSocks5Proxy {
                        CustomFlags = new TLLong(0)
                    };
                    proxy.Server = new TLString(Server);
                    var port = 0;
                    proxy.Port     = int.TryParse(Port, out port) ? new TLInt(port) : new TLInt(0);
                    proxy.Username = new TLString(Username);
                    proxy.Password = new TLString(Password);

                    _proxy = proxy;
                    proxyConfig.Items.Add(_proxy);
                    proxyConfig.SelectedIndex = new TLInt(proxyConfig.Items.IndexOf(_proxy));

                    _transportService.SetProxyConfig(proxyConfig);
                    _transportService.Close();
                    MTProtoService.PingAsync(TLLong.Random(), result => { });

                    EventAggregator.Publish(new ProxyChangedEventArgs(proxyConfig));
                    NavigationService.GoBack();

                    return;
                }
                // same type
                else
                {
                    proxy.Server = new TLString(Server);
                    var port = 0;
                    proxy.Port     = int.TryParse(Port, out port) ? new TLInt(port) : new TLInt(0);
                    proxy.Username = new TLString(Username);
                    proxy.Password = new TLString(Password);

                    _proxy = proxy;
                    if (proxyConfig.SelectedIndex.Value == proxyConfig.Items.IndexOf(_proxy))
                    {
                        _transportService.SetProxyConfig(proxyConfig);
                        _transportService.Close();
                        MTProtoService.PingAsync(TLLong.Random(), result => { });
                    }

                    EventAggregator.Publish(new ProxyChangedEventArgs(proxyConfig));
                    NavigationService.GoBack();

                    return;
                }
            }
            else
            {
                TLMTProtoProxy proxy = null;
                // new proxy
                if (_proxy == null)
                {
                    proxy = new TLMTProtoProxy {
                        CustomFlags = new TLLong(0)
                    };
                    proxy.Server = new TLString(Server);
                    var port = 0;
                    proxy.Port   = int.TryParse(Port, out port) ? new TLInt(port) : new TLInt(0);
                    proxy.Secret = new TLString(Secret);

                    _proxy = proxy;
                    proxyConfig.Items.Add(_proxy);
                    proxyConfig.SelectedIndex = new TLInt(proxyConfig.Items.IndexOf(_proxy));
                    proxyConfig.IsEnabled     = TLBool.True;

                    _transportService.SetProxyConfig(proxyConfig);
                    _transportService.Close();
                    MTProtoService.PingAsync(TLLong.Random(), result => { });

                    EventAggregator.Publish(new ProxyChangedEventArgs(proxyConfig));
                    NavigationService.GoBack();

                    return;
                }

                proxy = _proxy as TLMTProtoProxy;
                // change type
                if (proxy == null)
                {
                    proxy = new TLMTProtoProxy {
                        CustomFlags = new TLLong(0)
                    };
                    proxy.Server = new TLString(Server);
                    var port = 0;
                    proxy.Port   = int.TryParse(Port, out port) ? new TLInt(port) : new TLInt(0);
                    proxy.Secret = new TLString(Secret);

                    _proxy = proxy;
                    proxyConfig.Items.Add(_proxy);
                    proxyConfig.SelectedIndex = new TLInt(proxyConfig.Items.IndexOf(_proxy));

                    _transportService.SetProxyConfig(proxyConfig);
                    _transportService.Close();
                    MTProtoService.PingAsync(TLLong.Random(), result => { });

                    EventAggregator.Publish(new ProxyChangedEventArgs(proxyConfig));
                    NavigationService.GoBack();

                    return;
                }
                // same type
                else
                {
                    proxy.Server = new TLString(Server);
                    var port = 0;
                    proxy.Port   = int.TryParse(Port, out port) ? new TLInt(port) : new TLInt(0);
                    proxy.Secret = new TLString(Secret);

                    _proxy = proxy;
                    if (proxyConfig.SelectedIndex.Value == proxyConfig.Items.IndexOf(_proxy))
                    {
                        _transportService.SetProxyConfig(proxyConfig);
                        _transportService.Close();
                        MTProtoService.PingAsync(TLLong.Random(), result => { });
                    }

                    EventAggregator.Publish(new ProxyChangedEventArgs(proxyConfig));
                    NavigationService.GoBack();

                    return;
                }
            }
        }
コード例 #43
0
 protected void NotifyOthers(object value, OperationType operationType)
 {
     EventAggregator.NotifyOthers(value, operationType);
 }
コード例 #44
0
ファイル: SPServer.cs プロジェクト: Sagara42/SuperProxy
        private void ReadCallback(IAsyncResult ar)
        {
            var connection = (SPClient)ar.AsyncState;

            try
            {
                var readed = connection.Socket.EndReceive(ar, out var err);
                if (err != SocketError.Success || readed <= 0)
                {
                    connection.Socket.Disconnect(false);
                    connection.Socket.Close();
                    _connectionsPool.Release(connection);
                    return;
                }

                var buf = connection.WaitPacketLength;
                var len = BitConverter.ToUInt16(buf, 0);
                if (len > 0)
                {
                    var packetDataBuffer = new byte[len];
                    var r = 0;
                    while (r < packetDataBuffer.Length)
                    {
                        r += connection.Socket.Receive(packetDataBuffer, r, packetDataBuffer.Length - r, SocketFlags.None);
                    }

                    ThreadPool.QueueUserWorkItem((callback) =>
                    {
                        var message = MessagePackSerializer.Deserialize <IMessageEvent>(packetDataBuffer);

                        switch (message)
                        {
                        case PublishEvent publish:
                            EventAggregator.Publish(publish.Channel, publish.Message.Data, publish.Message.Header, connection);
                            break;

                        case SubscribeEvent subscribe:
                            EventAggregator.Subscribe(subscribe.Channel, connection);
                            break;

                        case UnsubscribeEvent unsubsribe:
                            if (unsubsribe.FromAll)
                            {
                                EventAggregator.UnsubscribeFromAllChannels(connection);
                            }
                            else
                            {
                                EventAggregator.Unsubscribe(unsubsribe.Channel, connection);
                            }
                            break;

                        case RMINotyfiEvent rmiEvent:
                            RemoteMethodEventAggregator.Subscribe(connection, rmiEvent);
                            break;

                        case RemoteMethodEvent remoteEvent:
                            RemoteMethodEventAggregator.Publish(remoteEvent, connection);
                            break;

                        case ReplicationListUpdateEvent repListEvent:
                            ReplicationEventAggregator.DispatchGenericReplicationInfo(connection, repListEvent);
                            break;

                        case ReplicationNotyfiEvent repNotyfi:
                            ReplicationEventAggregator.SetReplicationInfo(connection, repNotyfi.ObjectsToReplicate);
                            break;

                        case ReplicationPrimitiveUpdateEvent primitiveUpdateEvent:
                            ReplicationEventAggregator.DispatchPrimitiveReplicationInfo(connection, primitiveUpdateEvent);
                            break;
                        }
                    });
                }
                else
                {
                    connection.Socket.BeginReceive(connection.WaitPacketLength, 0, connection.WaitPacketLength.Length, SocketFlags.None, ReadCallback, connection);
                    return;
                }

                connection.Socket.BeginReceive(connection.WaitPacketLength, 0, connection.WaitPacketLength.Length, SocketFlags.None, ReadCallback, connection);
            }
            catch (ObjectDisposedException)
            {
                connection.ReadyForRMI = false;
            }
            catch (Exception e)
            {
                if (connection != null)
                {
                    Disconnect(connection);
                }

                _log.Error(e);
            }
        }
コード例 #45
0
 /// <summary>
 /// 执行关闭命令
 /// </summary>
 private void executeCancelCommand()
 {
     EventAggregator.GetEvent <ClosePopupEvent>().Publish(Parameter.FirstOrDefault(a => a.Key == ParentName).Value as MetroWindow);
 }
コード例 #46
0
 public void SetUp()
 {
     serviceLocator  = MockRepository.GenerateStub <IServiceLocator>();
     eventAggregator = new EventAggregator(serviceLocator);
 }
コード例 #47
0
 public void OnNavigatedFrom(Microsoft.Practices.Prism.Regions.NavigationContext navigationContext)
 {
     EventAggregator.GetEvent <MediaSelectionEvent>().Unsubscribe(imageView_MediaSelectionEvent);
 }
コード例 #48
0
ファイル: ProcessMonitor.cs プロジェクト: xbenjii/gw2pao
 public ProcessMonitor(ISystemService systemService, IPlayerService playerService, EventAggregator eventAggregator)
 {
     this.systemService           = systemService;
     this.playerService           = playerService;
     this.IsGw2Running            = false;
     this.DoesGw2HaveFocus        = false;
     this.currentMapId            = -1;
     this.isAdminRightsErrorShown = false;
     this.eventAggregator         = eventAggregator;
 }
コード例 #49
0
        // -----


        private void AddPerson()
        {
            EventAggregator.PublishOnUIThread(new ChangeViewMessage <PersonFormViewModel>());
        }
コード例 #50
0
        public DialogsViewModel(ICacheService cacheService, ICommonErrorHandler errorHandler, IStateService stateService, INavigationService navigationService, IMTProtoService mtProtoService, ITelegramEventAggregator eventAggregator)
            : base(cacheService, errorHandler, stateService, navigationService, mtProtoService, eventAggregator)
        {
            Items = new ObservableCollection <TLDialogBase>();
            EventAggregator.Subscribe(this);
            DisplayName = (string)new LowercaseConverter().Convert(AppResources.Dialogs, null, null, null);
            Status      = Items.Count == 0 && LazyItems.Count == 0 ? AppResources.Loading : string.Empty;

            BeginOnThreadPool(() =>
            {
                var isAuthorized = SettingsHelper.GetValue <bool>(Constants.IsAuthorizedKey);
                if (isAuthorized)
                {
                    var dialogs = CacheService.GetDialogs();

                    var dialogsCache   = new Dictionary <int, TLDialogBase>();
                    var clearedDialogs = new List <TLDialogBase>();
                    foreach (var dialog in dialogs)
                    {
                        if (!dialogsCache.ContainsKey(dialog.Index))
                        {
                            clearedDialogs.Add(dialog);
                            dialogsCache[dialog.Index] = dialog;
                        }
                        else
                        {
                            var cachedDialog = dialogsCache[dialog.Index];
                            if (cachedDialog.Peer is TLPeerUser && dialog.Peer is TLPeerUser)
                            {
                                CacheService.DeleteDialog(dialog);
                                continue;
                            }
                            if (cachedDialog.Peer is TLPeerChat && dialog.Peer is TLPeerChat)
                            {
                                CacheService.DeleteDialog(dialog);
                                continue;
                            }
                        }
                    }

                    // load cache
                    BeginOnUIThread(() =>
                    {
                        Status = dialogs.Count == 0 ? AppResources.Loading : string.Empty;
                        Items.Clear();

                        const int maxDialogSlice = 8;
                        for (var i = 0; i < clearedDialogs.Count && i < maxDialogSlice; i++)
                        {
                            Items.Add(clearedDialogs[i]);
                        }

                        if (maxDialogSlice < clearedDialogs.Count)
                        {
                            BeginOnUIThread(() =>
                            {
                                for (var i = maxDialogSlice; i < clearedDialogs.Count; i++)
                                {
                                    Items.Add(clearedDialogs[i]);
                                }

                                UpdateItemsAsync(Telegram.Api.Constants.CachedDialogsCount);
                            });
                        }
                        else
                        {
                            UpdateItemsAsync(Telegram.Api.Constants.CachedDialogsCount);
                        }
                    });
                }
            });
        }
コード例 #51
0
 private void OnUploadImge()
 {
     EventAggregator.GetEvent <ImageUploadRequestedEvent>().Publish(DoUploadImage);
 }
コード例 #52
0
 internal LogWriter(Action <string> logMessage, EventAggregator eventAggregator)
 {
     _eventAggregator = eventAggregator;
     _logMessage      = logMessage;
 }
コード例 #53
0
 protected override void Before_all_tests()
 {
     base.Before_all_tests();
     _eventSubscriptionManager = EventAggregatorFactory.Create(_testLogger);
     _statLightRunnerFactory   = new StatLightRunnerFactory(_testLogger, _eventSubscriptionManager);
 }
コード例 #54
0
 public SettingsRepository(ApplicationDbContextFactory contextFactory, EventAggregator eventAggregator)
 {
     _ContextFactory  = contextFactory;
     _EventAggregator = eventAggregator;
 }
コード例 #55
0
 private void OnResetImage()
 {
     EventAggregator.GetEvent <ImageDownloadeEvent>().Publish(null);
 }
コード例 #56
0
 public abstract void PublishEvent(EventAggregator aggregator, IScreenBase target);
コード例 #57
0
 public override void PublishEvent(EventAggregator aggregator, IScreenBase target)
 {
     aggregator.Publish(_event, _argsFactory(target));
 }
コード例 #58
0
 void Start()
 {
     EventAggregator.Subscribe(GameEvent.EngGameProcess, this, Hide);
 }
コード例 #59
0
        public void Handle(UploadableItem item)
        {
            var userSelf = item.Owner as TLUserSelf;

            if (userSelf != null)
            {
                MTProtoService.UploadProfilePhotoAsync(
                    new TLInputFile
                {
                    Id          = item.FileId,
                    MD5Checksum = new TLString(MD5Core.GetHashString(item.Bytes).ToLowerInvariant()),
                    Name        = new TLString(Guid.NewGuid() + ".jpg"),
                    Parts       = new TLInt(item.Parts.Count)
                },
                    new TLString(""),
                    new TLInputGeoPointEmpty(),
                    new TLInputPhotoCropAuto(),
                    photosPhoto =>
                {
                    MTProtoService.GetFullUserAsync(new TLInputUserSelf(), userFull => { }, error => { });
                },
                    error =>
                {
                });
                return;
            }

            var channel = item.Owner as TLChannel;

            if (channel != null)
            {
                if (channel.Id != null)
                {
                    MTProtoService.EditPhotoAsync(
                        channel,
                        new TLInputChatUploadedPhoto
                    {
                        File = new TLInputFile
                        {
                            Id          = item.FileId,
                            MD5Checksum = new TLString(MD5Core.GetHashString(item.Bytes).ToLowerInvariant()),
                            Name        = new TLString("channelPhoto.jpg"),
                            Parts       = new TLInt(item.Parts.Count)
                        },
                        Crop = new TLInputPhotoCropAuto()
                    },
                        statedMessage =>
                    {
                        var updates = statedMessage as TLUpdates;
                        if (updates != null)
                        {
                            var updateNewMessage = updates.Updates.FirstOrDefault(x => x is TLUpdateNewChannelMessage) as TLUpdateNewChannelMessage;
                            if (updateNewMessage != null)
                            {
                                EventAggregator.Publish(updateNewMessage.Message);
                            }
                        }
                    },
                        error =>
                    {
                        Execute.ShowDebugMessage("messages.editChatPhoto error " + error);
                    });
                }
            }

            var chat = item.Owner as TLChat;

            if (chat != null)
            {
                MTProtoService.EditChatPhotoAsync(
                    chat.Id,
                    new TLInputChatUploadedPhoto
                {
                    File = new TLInputFile
                    {
                        Id          = item.FileId,
                        MD5Checksum = new TLString(MD5Core.GetHashString(item.Bytes).ToLowerInvariant()),
                        Name        = new TLString("chatPhoto.jpg"),
                        Parts       = new TLInt(item.Parts.Count)
                    },
                    Crop = new TLInputPhotoCropAuto()
                },
                    statedMessage =>
                {
                    var updates = statedMessage as TLUpdates;
                    if (updates != null)
                    {
                        var updateNewMessage = updates.Updates.FirstOrDefault(x => x is TLUpdateNewMessage) as TLUpdateNewMessage;
                        if (updateNewMessage != null)
                        {
                            EventAggregator.Publish(updateNewMessage.Message);
                        }
                    }
                },
                    error =>
                {
                    Execute.ShowDebugMessage("messages.editChatPhoto error " + error);
                });
            }
        }
コード例 #60
-1
ファイル: FixtureBase.cs プロジェクト: nnieslan/StatLight
        public void SetupContext()
        {
            _eventSubscriptionManager = EventAggregatorFactory.Create(TestLogger);

            Before_all_tests();
            Because();
        }