public void GenericStrategyWorksInMemory()
        {
            var calc1 = new CalculationInput()
            {
                Number1 = 5, Number2 = 3
            };
            var op1 = new Operator()
            {
                Operation = OperatorEnum.Addition
            };
            var op2 = new Operator()
            {
                Operation = OperatorEnum.Subtraktion
            };

            var factory          = new MemoryOperatorStrategyLocator();
            var strategyProvider = new GenericStrategyProvider <IOperatorStrategy, Operator>(factory);

            IOperatorStrategy strategy;

            strategy = strategyProvider.GetStrategy(op1);
            strategy.DoCalculate(calc1).Should().Be(8);

            strategy = strategyProvider.GetStrategy(op2);
            strategy.DoCalculate(calc1).Should().Be(2);
        }
Ejemplo n.º 2
0
        private async Task <CalculationResult> CalculateResult(CalculationInput input, Func <Probability, Probability, Probability> calculation, string type)
        {
            var validationResult = _validator.Validate(input);

            if (!validationResult.IsValid)
            {
                return new CalculationResult {
                           Validation = validationResult
                }
            }
            ;

            var A = new Probability(input.A);
            var B = new Probability(input.B);

            var result = new CalculationResult
            {
                Validation        = validationResult,
                Result            = calculation(A, B).Value,
                CalculationDate   = DateTime.UtcNow,
                Inputs            = new[] { A, B },
                TypeOfCalculation = type
            };

            await _loggingService.LogAsync(result);

            return(result);
        }
    }
 private void HandleCalculationInputUpdated(CalculationInput calculationInput)
 {
     if (calculationInput.ArcDuration.Manufacturer != null)
     {
         BreakerEnabled = true;
         BreakerStyles  = null;
         BreakerStyles  = new List <BreakerStyle>(_dataService.GetBreakerStyles().Where(o => o.ManufacturerId == calculationInput.ArcDuration.Manufacturer.Id).ToList());
         if (calculationInput.ArcDuration.BreakerStyle != null)
         {
             TripUnitEnabled = true;
             TripUnitTypes   = _dataService.GetTripUnitTypes().Where(o => o.BreakerStyleId == calculationInput.ArcDuration.BreakerStyle.Id).ToList();
         }
     }
     CalculationInput = calculationInput;
     //if (CalculationInput.ArcDuration.Manufacturer != null && BreakerEnabled == false)
     //{
     //  BreakerEnabled = true;
     //  BreakerStyles = _dataService.GetBreakerStyles().Where(o => o.ManufacturerId == CalculationInput.ArcDuration.Manufacturer.Id).ToList();
     //}
     //if (CalculationInput.ArcDuration.BreakerStyle != null && TripUnitEnabled == false)
     //{
     //  TripUnitEnabled = true;
     //  TripUnitTypes = _dataService.GetTripUnitTypes().Where(o => o.BreakerStyleId == CalculationInput.ArcDuration.BreakerStyle.Id).ToList();
     //}
     SensorRatingErrorMessage = CalculationInput.GetStringError("SensorRating");
     IsEnabled = (CalculationInput.SensorRating.HasValue && SensorRatingErrorMessage == null && CalculationInput.ArcDuration.Manufacturer != null && CalculationInput.ArcDuration != null && CalculationInput.ArcDuration.TripUnitType != null);
 }
Ejemplo n.º 4
0
 public CalculationResult Execute(CalculationInput input)
 {
     return(new CalculationResult
     {
         Value = SumProbabilities(input) - GetCombinedProbability(input)
     });
 }
Ejemplo n.º 5
0
 public CalculationResult Execute(CalculationInput input)
 {
     return(new CalculationResult
     {
         Value = input.A * input.B
     });
 }
        /// <summary>
        /// Calculates the <see cref="BalancedFieldLengthOutput"/> based on <paramref name="calculation"/>.
        /// </summary>
        /// <param name="calculation">The <see cref="BalancedFieldLengthCalculation"/> to calculate for.</param>
        /// <returns>A <see cref="BalancedFieldLengthOutput"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="calculation"/> is <c>null</c>.</exception>
        /// <exception cref="CreateKernelDataException">Thrown when the calculation input
        /// could not be created for the kernel.</exception>
        /// <exception cref="KernelCalculationException">Thrown when <see cref="AggregatedDistanceOutput"/>
        /// could not be calculated.</exception>
        public BalancedFieldLengthOutput Calculate(BalancedFieldLengthCalculation calculation)
        {
            if (calculation == null)
            {
                throw new ArgumentNullException(nameof(calculation));
            }

            GeneralSimulationSettingsData generalSimulationSettings = calculation.SimulationSettings;
            double density     = generalSimulationSettings.Density;
            int    endVelocity = generalSimulationSettings.EndFailureVelocity;
            double gravitationalAcceleration = generalSimulationSettings.GravitationalAcceleration;

            EngineData   engineData        = calculation.EngineData;
            int          nrOfFailedEngines = engineData.NrOfFailedEngines;
            AircraftData aircraftData      = AircraftDataFactory.Create(calculation.AircraftData, engineData);

            var integrator = new EulerIntegrator();

            var outputs = new List <AggregatedDistanceOutput>();

            for (int i = 0; i < endVelocity; i++)
            {
                var calculationInput = new CalculationInput(generalSimulationSettings,
                                                            i,
                                                            aircraftData,
                                                            integrator,
                                                            nrOfFailedEngines,
                                                            density,
                                                            gravitationalAcceleration);
                AggregatedDistanceOutput output = CalculateDistances(calculationInput);
                outputs.Add(output);
            }

            return(BalancedFieldLengthOutputFactory.Create(outputs));
        }
 private void HandleCalculationInputUpdated(CalculationInput calculationInput)
 {
     CalculationInput               = calculationInput;
     NominalVoltageErrorMessage     = CalculationInput.GetStringError("NominalVoltage");
     SourceFaultCurrentErrorMessage = CalculationInput.GetStringError("SourceFaultCurrent");
     HasErrors = NominalVoltageErrorMessage != null || SourceFaultCurrentErrorMessage != null;
     IsEnabled = (CalculationInput.EquipmentType != null && CalculationInput.IsSolidGround.HasValue && CalculationInput.NominalVoltage.HasValue && CalculationInput.SourceFaultCurrent.HasValue && !HasErrors);
 }
Ejemplo n.º 8
0
        public async Task ExecuteAsync_Always_Validates()
        {
            var input = new CalculationInput();

            var result = await this.sut.ExecuteAsync(CalculationType.Either, input);

            this.inputValidatorMock.Verify(v => v.Validate(input));
        }
 private void UpdateCalculationInput(CalculationInput calculationInput)
 {
     CalculationInput = calculationInput;
     if (OriginalWorkingDistance == null && CalculationInput.WorkingDistance.HasValue)
     {
         OriginalWorkingDistance = CalculationInput.WorkingDistance.Value;
     }
 }
 public DCCircuitDiagramViewModel(INavigationService navigationService, IUnityContainer container, ICalculationInput calculationInput, IEventAggregator eventAggregator)
 {
     _navigationService = navigationService;
     _calculationInput  = calculationInput as CalculationInput;
     _eventAggregator   = eventAggregator;
     _eventAggregator.GetEvent <CalculationInputUpdated>().Subscribe(HandleCalculationInputUpdated);
     _container = container;
 }
Ejemplo n.º 11
0
 private void HandleCalculationInputUpdated(CalculationInput calculationInput)
 {
     CalculationInput = calculationInput;
     ConductorPerPhaseErrorMessage = CalculationInput.GetStringError("ConductorPerPhase");
     ConductorLengthErrorMessage   = CalculationInput.GetStringError("ConductorLenght");
     HasErrors = ConductorPerPhaseErrorMessage != null || ConductorLengthErrorMessage != null;
     IsEnabled = (CalculationInput.ConductorSize != null && CalculationInput.ConductorPerPhase.HasValue && CalculationInput.ConductorLength.HasValue && !HasErrors);
 }
Ejemplo n.º 12
0
 private void HandleCalculationInputUpdated(CalculationInput calculationInput)
 {
     CalculationInput           = calculationInput;
     PrimaryVoltageErrorMessage = CalculationInput.GetStringError("PrimaryVoltage");
     XfmrImpedanceErrorMessage  = CalculationInput.GetStringError("XfmrImpedance");
     XfmrKVAErrorMessage        = CalculationInput.GetStringError("XfmrKVA");
     HasErrors = PrimaryVoltageErrorMessage != null || XfmrImpedanceErrorMessage != null || XfmrKVAErrorMessage != null;
     IsEnabled = (CalculationInput.PrimaryVoltage.HasValue && CalculationInput.XfmrImpedance.HasValue && CalculationInput.XfmrKVA.HasValue && !HasErrors);
 }
Ejemplo n.º 13
0
 public ResultViewModel(INavigationService navigationService, IUnityContainer container, IDataService dataService, ICalculationInput calculationInput, IValidator <CalculationInput> validator, ICalculatorService calculatorService)
 {
     _navigationService = navigationService;
     _dataService       = dataService;
     _calculationInput  = calculationInput as CalculationInput;
     _validator         = validator;
     _container         = container;
     _calculatorService = calculatorService;
 }
 public ACInputTwoViewModel(INavigationService navigationService, ICalculationInput calculationInput, IValidator <CalculationInput> validator, IUnityContainer container, IEventAggregator eventAggregator)
 {
     _navigationService = navigationService;
     _calculationInput  = calculationInput as CalculationInput;
     _validator         = validator;
     _container         = container;
     _eventAggregator   = eventAggregator;
     _eventAggregator.GetEvent <CalculationInputUpdated>().Subscribe(HandleCalculationInputUpdated);
 }
Ejemplo n.º 15
0
        private async void Ok()
        {
            _isClicked       = true;
            CalculationInput = _container.Resolve <ICalculationInput>() as CalculationInput;
            await _navigationService.NavigateAsync("app:///MasterPage/NavPage/CommonInput");

            await PopupNavigation.PopAllAsync(true);

            _isClicked = false;
        }
Ejemplo n.º 16
0
 private void HandleCalculationInputUpdated(CalculationInput calculationInput)
 {
     CalculationInput             = calculationInput;
     SensorRatingErrorMessage     = CalculationInput.GetStringError("SensorRating");
     ArcDurationValueErrorMessage = CalculationInput.GetStringError("ArcDurationValue");
     CalculationOutput.EstimatedArcFaultCurrent = _calculatorService.CalculateArcFaultCurrentAC(CalculationInput);
     EstimatedArcFaultCurrent = CalculationOutput.EstimatedArcFaultCurrent * 1000;
     CalculationOutput.MultipleOfSensorRating = _calculatorService.CalculateMultipleSensorRatingAC(CalculationInput, CalculationOutput.EstimatedArcFaultCurrent);
     HasErrors = SensorRatingErrorMessage != null || ArcDurationValueErrorMessage != null;
     IsEnabled = (CalculationInput.ArcDurationValue.HasValue && !HasErrors);
 }
        public async Task <IActionResult> EitherAOrB([FromBody] CalculationInput input)
        {
            var output = await _service.EitherAOrB(input);

            if (!output.Validation.IsValid)
            {
                return(BadRequest(output.Validation));
            }

            return(Ok(output.Result));
        }
Ejemplo n.º 18
0
        public void CalcRiskCategoryAC([ValueSource(typeof(CalcNoXNoCAC), "GetCalculationInputSimples")] CalculationInputSimple inputSimple, [ValueSource(typeof(CalcNoXNoCAC), "GetCalculationOutputs")] CalculationOutput output)
        {
            CalculationInput input = Container.Resolve <ICalculationInput>() as CalculationInput;

            MapCalculationInputSimpleToCalculationInput(ref input, ref inputSimple);

            var riskCat  = Calc.RiskCategoryAC(output);
            var expected = output.HazardCat;
            var real     = riskCat;

            Assert.AreEqual(expected, real);
        }
Ejemplo n.º 19
0
        public void CalcIncidentEnergyDistanceAC([ValueSource(typeof(CalcNoXNoCAC), "GetCalculationInputSimples")] CalculationInputSimple inputSimple, [ValueSource(typeof(CalcNoXNoCAC), "GetCalculationOutputs")] CalculationOutput output)
        {
            CalculationInput input = Container.Resolve <ICalculationInput>() as CalculationInput;

            MapCalculationInputSimpleToCalculationInput(ref input, ref inputSimple);

            decimal IE       = Calc.CalcIncidentEnergyAC(input.WorkingDistance.Value, Calc.CalculateArcFaultCurrentAC(input)).Value;
            var     expected = RoundValue(output.IncidentEnergy);
            var     real     = RoundValue(IE);

            Assert.AreEqual(expected, real);
        }
Ejemplo n.º 20
0
        public void CalcFlashHazardBoundaryAC([ValueSource(typeof(CalcNoXNoCAC), "GetCalculationInputSimples")] CalculationInputSimple inputSimple, [ValueSource(typeof(CalcNoXNoCAC), "GetCalculationOutputs")] CalculationOutput output)
        {
            CalculationInput input = Container.Resolve <ICalculationInput>() as CalculationInput;

            MapCalculationInputSimpleToCalculationInput(ref input, ref inputSimple);

            var fhb      = Calc.CalcFlashHazardBoundaryAC(Calc.CalculateArcFaultCurrentAC(input));
            var expected = RoundValue(output.FPB);
            var real     = RoundValue(fhb);

            Assert.AreEqual(expected, real);
        }
Ejemplo n.º 21
0
        public void CalcBoltedFaultCurrentAC([ValueSource(typeof(CalcNoXNoCAC), "GetCalculationInputSimples")] CalculationInputSimple inputSimple, [ValueSource(typeof(CalcNoXNoCAC), "GetCalculationOutputs")] CalculationOutput output)
        {
            CalculationInput input = Container.Resolve <ICalculationInput>() as CalculationInput;

            MapCalculationInputSimpleToCalculationInput(ref input, ref inputSimple);

            decimal bfc      = Calc.CalcBoltedFaultCurrentAC(input);
            var     expected = RoundValue(output.BoltedFaultCurrent.Value);
            var     real     = RoundValue(bfc);

            Assert.AreEqual(expected, real);
        }
        public List <VisibilityModel> ShowingAndHidingService(CalculationInput calculationInput)
        {
            CalculationInput CalculationInput = calculationInput;
            bool             ShowAlternatingCurrentFields, ShowDirectCurrentFields, ShowConductorFields, ShowTransformerFields;

            if (!CalculationInput.IsAlternatingCurrent.HasValue)
            {
                ShowAlternatingCurrentFields = CalculationInput.IsAlternatingCurrent ?? false;
                ShowDirectCurrentFields      = !CalculationInput.IsAlternatingCurrent ?? false;
                ShowConductorFields          = CalculationInput.HasCable ?? false;
                ShowTransformerFields        = CalculationInput.HasTransformer ?? false;
            }
            else
            {
                //HasErrors = calculationInput.ErrorCount > 0;
                //ErrorCount = calculationInput.ErrorCount;
                //IsDirectCurrent = !CalculationInput.IsAlternatingCurrent ?? false;
                ShowConductorFields          = false;
                ShowTransformerFields        = false;
                ShowAlternatingCurrentFields = calculationInput.IsAlternatingCurrent ?? false;
                ShowDirectCurrentFields      = !calculationInput.IsAlternatingCurrent ?? false;
                if (ShowAlternatingCurrentFields)
                {
                    ShowConductorFields   = calculationInput.HasCable ?? false;
                    ShowTransformerFields = calculationInput.HasTransformer ?? false;
                }

                // CalculationInput.HasTransformer = CalculationInput.IsAlternatingCurrent.HasValue && !CalculationInput.IsAlternatingCurrent.Value ? null : CalculationInput.HasTransformer;
            }

            List <VisibilityModel> Fields = new List <VisibilityModel>();

            Fields.Add(new VisibilityModel()
            {
                Parameter = "ShowAlternatingCurrentFields", ParameterValue = ShowAlternatingCurrentFields
            });
            Fields.Add(new VisibilityModel()
            {
                Parameter = "ShowDirectCurrentFields", ParameterValue = ShowDirectCurrentFields
            });
            Fields.Add(new VisibilityModel()
            {
                Parameter = "ShowConductorFields", ParameterValue = ShowConductorFields
            });
            Fields.Add(new VisibilityModel()
            {
                Parameter = "ShowTransformerFields", ParameterValue = ShowTransformerFields
            });

            return(Fields);
//      throw new NotImplementedException();
        }
Ejemplo n.º 23
0
        private void UpdateCalculationInput(CalculationInput calculationInput)
        {
            CalculationInput = calculationInput;
            ErrorCount       = CalculationInput.ErrorCount;
            if (!CalculationInput.IsAlternatingCurrent.HasValue)
            {
                HasEstimatedArcFaultCurrent  = false;
                ShowAlternatingCurrentFields = CalculationInput.IsAlternatingCurrent ?? false;
                ShowDirectCurrentFields      = !CalculationInput.IsAlternatingCurrent ?? false;
                ShowConductorFields          = CalculationInput.HasCable ?? false;
                ShowTransformerFields        = CalculationInput.HasTransformer ?? false;

                if (Manufacturers != null)
                {
                    Manufacturers.SelectedItem = null;
                }
                if (BreakerStyles != null)
                {
                    BreakerStyles.SelectedItem = null;
                }
                if (TripUnitTypes != null)
                {
                    TripUnitTypes.SelectedItem = null;
                }
            }
            else
            {
                IsReset                      = true;
                EnableCableFields            = CalculationInput.HasCable.HasValue ? CalculationInput.HasCable.Value : false;
                EnableTransformerFields      = CalculationInput.HasTransformer.HasValue ? CalculationInput.HasTransformer.Value : false;
                HasRangeErrors               = calculationInput.ErrorCount > 0;
                HasErrors                    = !HasRangeErrors && calculationInput.HasErrors;
                IsDirectCurrent              = !CalculationInput.IsAlternatingCurrent ?? false;
                ShowConductorFields          = false;
                ShowTransformerFields        = false;
                ShowAlternatingCurrentFields = calculationInput.IsAlternatingCurrent ?? false;
                ShowDirectCurrentFields      = !calculationInput.IsAlternatingCurrent ?? false;
                if (ShowAlternatingCurrentFields)
                {
                    ShowConductorFields   = calculationInput.HasCable ?? false;
                    ShowTransformerFields = calculationInput.HasTransformer ?? false;
                }

                //do output calc
                CalculationOutput.EstimatedArcFaultCurrent = _calculatorService.CalculateArcFaultCurrentAC(calculationInput);
                EstimatedArcFaultCurrentInAmps             = CalculationOutput.EstimatedArcFaultCurrent * 1000;
                HasEstimatedArcFaultCurrent = EstimatedArcFaultCurrentInAmps != null;
                CalculationOutput.MultipleOfSensorRating = _calculatorService.CalculateMultipleSensorRatingAC(calculationInput, CalculationOutput.EstimatedArcFaultCurrent);
                _eventAggregator.GetEvent <CalculationOutputUpdated>().Publish(CalculationOutput);
            }
        }
Ejemplo n.º 24
0
 public ACResultViewModel(IPdfCreatorService pdfCreator, ISaveAndLoad saveAndLoad, INavigationService navigationService, IUnityContainer container, IDataService dataService, ICalculationOutput calculationOutput, ICalculationInput calculationInput, ICalculatorService calculatorService, IPageDialogService dialogService, IEventAggregator eventAggregator)
 {
     _pdfCreator        = pdfCreator;
     _saveAndLoad       = saveAndLoad;
     _navigationService = navigationService;
     _dataService       = dataService;
     _calculationInput  = calculationInput as CalculationInput;
     _calculationOutput = calculationOutput as CalculationOutput;
     _container         = container;
     _calculatorService = calculatorService;
     _dialogService     = dialogService;
     _eventAggregator   = eventAggregator;
     //_eventAggregator.GetEvent<CalculationOutputUpdated>().Subscribe(HandleCalculationOutputUpdated);
     //_eventAggregator.GetEvent<CalculationInputUpdated>().Subscribe(HandleCalculationInputUpdated);
 }
Ejemplo n.º 25
0
        public void Should_fail_if_input_B_is_out_of_range(decimal b)
        {
            // arrange
            var input = new CalculationInput
            {
                A = 0.5M,
                B = b
            };

            // act
            var actual = GetSubject().Validate(input);

            // assert
            actual.IsValid.Should().BeFalse();
            actual.Error.Should().Be($"Value {b} for input is out of range. Must be between 0 and 1");
        }
Ejemplo n.º 26
0
        public void Should_pass_if_both_A_and_B_are_in_range(decimal a, decimal b)
        {
            // arrange
            var input = new CalculationInput
            {
                A = a,
                B = b
            };

            // act
            var actual = GetSubject().Validate(input);

            // assert
            actual.IsValid.Should().BeTrue();
            actual.Error.Should().BeNull();
        }
 private void UpdateArcDuration(ArcDuration arcDuration)
 {
     ArcDuration = arcDuration;
     if (CalculationInput.ArcDuration.Manufacturer != null && BreakerEnabled == false)
     {
         BreakerEnabled = true;
         BreakerStyles  = new List <BreakerStyle>(_dataService.GetBreakerStyles().Where(o => o.ManufacturerId == CalculationInput.ArcDuration.Manufacturer.Id).ToList());
     }
     if (CalculationInput.ArcDuration.BreakerStyle != null && TripUnitEnabled == false)
     {
         TripUnitEnabled = true;
         TripUnitTypes   = _dataService.GetTripUnitTypes().Where(o => o.BreakerStyleId == CalculationInput.ArcDuration.BreakerStyle.Id).ToList();
     }
     SensorRatingErrorMessage = CalculationInput.GetStringError("SensorRating");
     IsEnabled = (CalculationInput.SensorRating.HasValue && SensorRatingErrorMessage == null && CalculationInput.ArcDuration.Manufacturer != null && CalculationInput.ArcDuration != null && CalculationInput.ArcDuration.TripUnitType != null);
 }
Ejemplo n.º 28
0
        public async Task <CalculationResult> ExecuteAsync(CalculationType type, CalculationInput input)
        {
            this.calculationInputValidator.Validate(input);

            var result = this.calculationFactory.Create(type).Execute(input);

            await this.calculationAuditRepository.SaveAsync(new CalculationAudit
            {
                CalculationType = type,
                Input           = input,
                Result          = result,
                Timestamp       = DateTime.UtcNow
            });

            return(result);
        }
Ejemplo n.º 29
0
        public decimal?CalcIncidentEnergyL50DC(CalculationInput calculationInput)
        {
            if (!calculationInput.MaximumShortCircuitAvailable.HasValue)
            {
                return(null);
            }
            if (!calculationInput.InCabinet.HasValue)
            {
                return(null);
            }

            var     cabinet = (calculationInput.InCabinet.Value) ? 3m : 1m;
            decimal iE50    = cabinet * 0.01m * 48 * (calculationInput.MaximumShortCircuitAvailable.Value / 2m) * (2m / (45m * 45m));

            return(iE50);
        }
        public async Task EitherAorB_should_return_ok_if_service_succeeds()
        {
            // arrange
            var input        = new CalculationInput();
            var goodResponse = new CalculationResult {
                Validation = ValidationResult.Success()
            };

            A.CallTo(() => _calculationService.EitherAOrB(input))
            .Returns(goodResponse);

            // act
            var result = await GetSubject().EitherAOrB(input);

            // assert
            result.Should().BeOfType <OkObjectResult>();
        }