public static bool IsValidRule(InputDataUnit dataUnit, Rules rules) { bool result = false; switch (dataUnit.ValueType) { case IntegerType: var validIntDataUnit = GetIntegerDataUnit(dataUnit); var validIntValueRule = GetIntegerValueRule(rules); result = IsValidIntegerRule(validIntDataUnit, validIntValueRule); break; case StringType: var validStringDataUnit = GetStringDataUnit(dataUnit); var validStringValueRule = GetStringValueRule(rules); result = IsValidStringRule(validStringDataUnit, validStringValueRule); break; case DateTimeType: var validDateTimeDataUnit = GetDateTimeDataUnit(dataUnit); var validDateTimeValueRule = GetDateTimeValueRule(rules); result = IsValidDateTimeRule(validDateTimeDataUnit, validDateTimeValueRule); break; default: throw new Exception("Value type not found"); } return(result); }
private static StringDataUnit GetStringDataUnit(InputDataUnit dataUnit) { if (StringDataUnit == null) { StringDataUnit = new StringDataUnit(dataUnit.Signal, dataUnit.Value); } else { StringDataUnit.Signal = dataUnit.Signal; StringDataUnit.Value = dataUnit.Value; } return(StringDataUnit); }
private static DateTimeDataUnit GetDateTimeDataUnit(InputDataUnit dataUnit) { if (!DateTime.TryParse(dataUnit.Value, out DateTime dateTime)) { throw new Exception($"{dataUnit.Signal} : {dataUnit.Value} is not valid"); } if (DateTimeDataUnit == null) { DateTimeDataUnit = new DateTimeDataUnit(dataUnit.Signal, dateTime); } else { DateTimeDataUnit.Signal = dataUnit.Signal; DateTimeDataUnit.Value = dateTime; } return(DateTimeDataUnit); }
private static IntegerDataUnit GetIntegerDataUnit(InputDataUnit dataUnit) { if (!double.TryParse(dataUnit.Value, out double intResult)) { throw new Exception($"{dataUnit.Signal} : {dataUnit.Value} is not valid"); } if (IntegerDataUnit == null) { IntegerDataUnit = new IntegerDataUnit(dataUnit.Signal, intResult); } else { IntegerDataUnit.Signal = dataUnit.Signal; IntegerDataUnit.Value = intResult; } return(IntegerDataUnit); }
public static IEnumerable <InputDataUnit> ReadInputData(string inputFilePath) { if (!File.Exists(inputFilePath)) { throw new FileNotFoundException("Input file is not present in location provided"); } JsonSerializer jsonSerializer = new JsonSerializer(); InputDataUnit dataUnit = null; using (var streamReader = new StreamReader(inputFilePath)) { using (var reader = new JsonTextReader(streamReader)) { while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { dataUnit = jsonSerializer.Deserialize <InputDataUnit>(reader); yield return(dataUnit); } } } } }
public void RulesService_IsValidRule_DateTimeDataUnitTests() { var actual = false; Rules rules = new Rules(); InputDataUnit dataUnit = new InputDataUnit(SignalName, DateTimeType, "HIGH"); DateTimeValueRule dateTimeValueRule = new DateTimeValueRule(null, null, null, null); rules.DateTimeValueRule = dateTimeValueRule; var dateVeryBig = "23/07/2025 00:00:00.0000"; var dateBig = "23/07/2023 00:00:00.0000"; var dateSmall = "23/07/2021 00:00:00.0000"; var dateMiddle = "23/07/2022 00:00:00.0000"; //Negative Tests : dateTimeValueRule.ShouldBeGreaterThan = dateMiddle; dataUnit.Value = dateSmall; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); dateTimeValueRule.ShouldBeGreaterThan = null; dateTimeValueRule.ShouldBeLessThan = dateMiddle; dataUnit.Value = dateBig; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); dateTimeValueRule.ShouldBeGreaterThan = dateMiddle; dateTimeValueRule.ShouldBeLessThan = dateBig; dataUnit.Value = dateSmall; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); dataUnit.Value = dateVeryBig; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); dateTimeValueRule.ShouldBeGreaterThan = null; dateTimeValueRule.ShouldBeLessThan = null; dateTimeValueRule.ShouldBeEqualTo = dateMiddle; dataUnit.Value = dateSmall; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); dateTimeValueRule.ShouldBeEqualTo = null; dateTimeValueRule.ShouldNotBeEqualTo = dateVeryBig; dataUnit.Value = dateVeryBig; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); //Postitive test cases //Resetting to null dateTimeValueRule.ShouldBeGreaterThan = null; dateTimeValueRule.ShouldNotBeEqualTo = null; dateTimeValueRule.ShouldBeEqualTo = null; dateTimeValueRule.ShouldNotBeEqualTo = null; dateTimeValueRule.ShouldBeGreaterThan = dateMiddle; dataUnit.Value = dateBig; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); dateTimeValueRule.ShouldBeGreaterThan = null; dateTimeValueRule.ShouldBeLessThan = dateVeryBig; dataUnit.Value = dateSmall; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); dateTimeValueRule.ShouldBeGreaterThan = dateMiddle; dateTimeValueRule.ShouldBeLessThan = dateVeryBig; dataUnit.Value = dateBig; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); dateTimeValueRule.ShouldBeGreaterThan = null; dateTimeValueRule.ShouldBeLessThan = null; dateTimeValueRule.ShouldBeEqualTo = dateSmall; dataUnit.Value = dateSmall; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); dateTimeValueRule.ShouldBeEqualTo = null; dateTimeValueRule.ShouldNotBeEqualTo = dateBig; dataUnit.Value = dateVeryBig; RulesService.RulesService.DateTimeValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); }
public void RulesService_IsValidRule_StringDataUnitTests() { var actual = false; Rules rules = new Rules(); InputDataUnit dataUnit = new InputDataUnit(SignalName, StringType, "HIGH"); StringValueRule stringValueRule = new StringValueRule(null, null, null, null); rules.StringValueRule = stringValueRule; //Negative Tests : stringValueRule.ShouldBeGreaterThan = "B"; dataUnit.Value = "A"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); stringValueRule.ShouldBeGreaterThan = null; stringValueRule.ShouldBeLessThan = "A"; dataUnit.Value = "B"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); stringValueRule.ShouldBeGreaterThan = "C"; stringValueRule.ShouldBeLessThan = "F"; dataUnit.Value = "B"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); dataUnit.Value = "G"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); stringValueRule.ShouldBeGreaterThan = null; stringValueRule.ShouldBeLessThan = null; stringValueRule.ShouldBeEqualTo = "AA"; dataUnit.Value = "BB"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); stringValueRule.ShouldBeEqualTo = null; stringValueRule.ShouldNotBeEqualTo = "AA"; dataUnit.Value = "AA"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsFalse(actual); //Postitive test cases //Resetting to null stringValueRule.ShouldBeGreaterThan = null; stringValueRule.ShouldNotBeEqualTo = null; stringValueRule.ShouldBeEqualTo = null; stringValueRule.ShouldNotBeEqualTo = null; stringValueRule.ShouldBeGreaterThan = "A"; dataUnit.Value = "B"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); stringValueRule.ShouldBeGreaterThan = null; stringValueRule.ShouldBeLessThan = "B"; dataUnit.Value = "A"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); stringValueRule.ShouldBeGreaterThan = "A"; stringValueRule.ShouldBeLessThan = "C"; dataUnit.Value = "B"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); stringValueRule.ShouldBeGreaterThan = null; stringValueRule.ShouldBeLessThan = null; stringValueRule.ShouldBeEqualTo = "AAA"; dataUnit.Value = "AAA"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); stringValueRule.ShouldBeEqualTo = null; stringValueRule.ShouldNotBeEqualTo = "ABC"; dataUnit.Value = "BCA"; RulesService.RulesService.StringValueRule = null; actual = RulesService.RulesService.IsValidRule(dataUnit, rules); Assert.IsTrue(actual); }
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); }