public void CanGetCalculationLoggingObj() { // Arrange string message = "This is a test message for logging obj"; double leftInput = 0.5; double rightInput = 0.5; int logicCode = 1; double result = 0.25; DateTime timeStamp = DateTime.Now; // Act ICalculationLogging actualCalcresult = AppCoreFactory.GetCalculationLoggingObj( message, leftInput, rightInput, logicCode, result, timeStamp ); // Assert Assert.IsNotNull(actualCalcresult); Assert.AreEqual(message, actualCalcresult.Message); Assert.AreEqual(leftInput, actualCalcresult.LeftInput); Assert.AreEqual(rightInput, actualCalcresult.RightInput); Assert.AreEqual(logicCode, actualCalcresult.LogicId); Assert.AreEqual(result, actualCalcresult.Result); Assert.AreEqual(timeStamp, actualCalcresult.TimeStamp); }
public void CanGetCalculationLogicExceptionForInvalidParam_OutOfRange() { // Arrange int inputLogic = 3; // Act IProbabilityLogic result = AppCoreFactory.CreateCalculationLogic(inputLogic); // Assert }
public void CanGetEitherCalculationLogic() { // Arrange int calculationLogic = 2; // Act IProbabilityLogic result = AppCoreFactory.CreateCalculationLogic(calculationLogic); // Assert Assert.IsNotNull(result); Assert.IsTrue(result.GetType() == typeof(EitherProbabilityLogic)); }
public void CanGetCalculationResultObj() { // Arrange double inputResult = 1; // Act ICalculationResult result = AppCoreFactory.CreateCalculatinoResult(inputResult); // Assert Assert.IsNotNull(result); Assert.AreEqual(result.Result, inputResult); }
public ICalculationResult GetCalculationResult( double leftInput, double rightInput, int logicCode ) { if (!IsInputsValidForProbabilityCalculation(leftInput, rightInput)) { throw new InvalidOperationException(c_InvalidInputErrMsg); } if (logicCode == default(int)) { throw new InvalidOperationException(nameof(logicCode)); } ICalculationResult result = null; IProbabilityLogic probabilityLogic = AppCoreFactory.CreateCalculationLogic(logicCode); if (probabilityLogic != null) { result = AppCoreFactory.CreateCalculatinoResult( // using Decorator Pattern probabilityLogic.GetCalculationResult(leftInput, rightInput) ); result.CalculationLogging = AppCoreFactory.GetCalculationLoggingObj( c_ResultLogginMessage, leftInput, rightInput, (int)logicCode, result.Result, // TODO : fix testability technical debt DateTime.Now ); _logger.LogInformation( $"{result.CalculationLogging.Message} " + $"timeStamp = {result.CalculationLogging.TimeStamp}, " + $"leftInput = {result.CalculationLogging.LeftInput}, " + $"rightInput = {result.CalculationLogging.RightInput}, " + $"calculationLogic = {result.CalculationLogging.LogicId}, " + $"result = {result.CalculationLogging.Result}" ); } return(result); }