private static IntegerValueRule GetIntegerValueRule(Rules rules) { if (IntegerValueRule != null) { return(IntegerValueRule); } double?greaterThan = null, lesserThan = null, equalTo = null, notEqualTo = null; if (double.TryParse(rules.IntegerValueRule.ShouldBeGreaterThan, out double greater)) { greaterThan = greater; } if (double.TryParse(rules.IntegerValueRule.ShouldBeLessThan, out double lesser)) { lesserThan = lesser; } if (double.TryParse(rules.IntegerValueRule.ShouldBeEqualTo, out double equals)) { equalTo = equals; } if (double.TryParse(rules.IntegerValueRule.ShouldNotBeEqualTo, out double notEquals)) { notEqualTo = notEquals; } IntegerValueRule = new IntegerValueRule(greaterThan, lesserThan, equalTo, notEqualTo); return(IntegerValueRule); }
private static bool IsValidIntegerRule(IntegerDataUnit validIntegerDataUnit, IntegerValueRule integerValueRule) { RuleToApply ruleToApply = RuleToApply.NOTEQUALTO; if (integerValueRule.GreaterThan.HasValue || integerValueRule.LessThan.HasValue) { ruleToApply = RuleToApply.GREATERORLESSER; } else if (integerValueRule.EqualTo.HasValue) { ruleToApply = RuleToApply.EQUALTO; } else if (integerValueRule.NotEqualTo.HasValue) { ruleToApply = RuleToApply.NOTEQUALTO; } else { throw new Exception($"Integer Value rule needs to have a proper value"); } switch (ruleToApply) { case RuleToApply.GREATERORLESSER: if (integerValueRule.GreaterThan.HasValue && integerValueRule.LessThan.HasValue) { if (validIntegerDataUnit.Value >= integerValueRule.GreaterThan.Value && validIntegerDataUnit.Value <= integerValueRule.LessThan.Value) { return(true); } return(false); } else if (integerValueRule.GreaterThan.HasValue && validIntegerDataUnit.Value >= integerValueRule.GreaterThan.Value) { return(true); } else if (integerValueRule.LessThan.HasValue && validIntegerDataUnit.Value <= integerValueRule.LessThan.Value) { return(true); } return(false); case RuleToApply.EQUALTO: return(validIntegerDataUnit.Value == integerValueRule.EqualTo); case RuleToApply.NOTEQUALTO: return(validIntegerDataUnit.Value != integerValueRule.NotEqualTo); default: throw new NotSupportedException("The given type is not valid"); } }
public void RulesService_IsValidRule_IntegerDataUnitTests() { var actual = false; Rules rules = new Rules(); InputDataUnit dataUnit = new InputDataUnit(SignalName, IntegerType, "25.99"); IntegerValueRule integerValueRule = new IntegerValueRule(null, null, null, null); rules.IntegerValueRule = integerValueRule; //Negative Tests integerValueRule.ShouldBeGreaterThan = "26.01"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); integerValueRule.ShouldBeGreaterThan = null; integerValueRule.ShouldBeLessThan = "15"; dataUnit.Value = "16"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); integerValueRule.ShouldBeGreaterThan = "99.99"; integerValueRule.ShouldBeLessThan = "123.123"; dataUnit.Value = "99.98"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); dataUnit.Value = "123.124"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); integerValueRule.ShouldBeGreaterThan = null; integerValueRule.ShouldBeLessThan = null; integerValueRule.ShouldBeEqualTo = "22.22"; dataUnit.Value = "20.20"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); integerValueRule.ShouldBeEqualTo = null; integerValueRule.ShouldNotBeEqualTo = "22.22"; dataUnit.Value = "22.22"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); //Postitive test cases //Resetting to null integerValueRule.ShouldBeGreaterThan = null; integerValueRule.ShouldNotBeEqualTo = null; integerValueRule.ShouldBeEqualTo = null; integerValueRule.ShouldNotBeEqualTo = null; integerValueRule.ShouldBeGreaterThan = "53.33"; dataUnit.Value = "53.34"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); integerValueRule.ShouldBeGreaterThan = null; integerValueRule.ShouldBeLessThan = "99.99"; dataUnit.Value = "99.98"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); integerValueRule.ShouldBeGreaterThan = "95.25"; integerValueRule.ShouldBeLessThan = "99.99"; dataUnit.Value = "96.2"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); integerValueRule.ShouldBeGreaterThan = null; integerValueRule.ShouldBeLessThan = null; integerValueRule.ShouldBeEqualTo = "225.122"; dataUnit.Value = "225.122"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); integerValueRule.ShouldBeEqualTo = null; integerValueRule.ShouldNotBeEqualTo = "123.35"; dataUnit.Value = "123.34"; RulesService.RulesService.IntegerValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); }