예제 #1
0
        public void ShowAlerts()
        {
            // this is kind of unnecessary because there's integration test coverage of Alert components
            // but wanted to keep it anyway to see what's possible w.r.t. testing components
            // in a unit test

            var prototypeManager = IoCManager.Resolve <IPrototypeManager>();

            prototypeManager.RegisterType(typeof(AlertPrototype));
            var factory = IoCManager.Resolve <IComponentFactory>();

            factory.Register <ServerAlertsComponent>();
            prototypeManager.LoadFromStream(new StringReader(PROTOTYPES));
            prototypeManager.Resync();
            var alertManager = IoCManager.Resolve <AlertManager>();

            alertManager.Initialize();


            var alertsComponent = new ServerAlertsComponent();

            alertsComponent = IoCManager.InjectDependencies(alertsComponent);

            Assert.That(alertManager.TryGetWithEncoded(AlertType.LowPressure, out var lowpressure, out var lpencoded));
            Assert.That(alertManager.TryGetWithEncoded(AlertType.HighPressure, out var highpressure, out var hpencoded));

            alertsComponent.ShowAlert(AlertType.LowPressure);
            var alertState = alertsComponent.GetComponentState() as AlertsComponentState;

            Assert.NotNull(alertState);
            Assert.That(alertState.Alerts.Length, Is.EqualTo(1));
            Assert.That(alertState.Alerts[0], Is.EqualTo(new AlertState {
                AlertEncoded = lpencoded
            }));

            alertsComponent.ShowAlert(AlertType.HighPressure);
            alertState = alertsComponent.GetComponentState() as AlertsComponentState;
            Assert.That(alertState.Alerts.Length, Is.EqualTo(1));
            Assert.That(alertState.Alerts[0], Is.EqualTo(new AlertState {
                AlertEncoded = hpencoded
            }));

            alertsComponent.ClearAlertCategory(AlertCategory.Pressure);
            alertState = alertsComponent.GetComponentState() as AlertsComponentState;
            Assert.That(alertState.Alerts.Length, Is.EqualTo(0));
        }
 private void AddWeightless(ServerAlertsComponent status)
 {
     status.ShowAlert(AlertType.Weightless);
 }