Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }