예제 #1
0
        static void Main(string[] args)
        {
            try
            {
                Rules       rul = new Rules();
                JsonReader  jr  = new JsonReader();
                JsonPrinter jp  = new JsonPrinter();
                Validator   val = new Validator();

                //Loading input file
                jr.file_name = ConfigurationManager.AppSettings.Get("InputFileLocation");
                IEnumerable <RawInput> jsonInput = jr.ReadJson <RawInput>();

                //Loading Rules file
                jr.file_name = ConfigurationManager.AppSettings.Get("RulesFileLocation");
                IEnumerable <Rules> jsonRules = jr.ReadJson <Rules>();

                //Validating Signals
                val.Validation(jsonRules, jsonInput);

                //Print result in json format
                jp.PrintResult(ConfigurationManager.AppSettings.Get("OutputFileLocation"));

                Console.ReadKey();
            }
            catch (Exception e)
            {
                Console.Write("Error Occured: " + e);
            }
        }
예제 #2
0
        public void ValidateBL()
        {
            Rules       rul = new Rules();
            JsonReader  jr  = new JsonReader();
            JsonPrinter jp  = new JsonPrinter();
            Validator   val = new Validator();

            //Generate output
            jr.file_name = "../../IOFiles/raw_data.Json";
            IEnumerable <RawInput> jsonInput = jr.ReadJson <RawInput>();


            jr.file_name = "../../Input/rules.json";
            IEnumerable <Rules> jsonRules = jr.ReadJson <Rules>();

            val.Validation(jsonRules, jsonInput);
            jp.PrintResult("../../IOFiles/Result.Json");

            //Actual output
            jr.file_name = "../../IOFiles/Result.Json";
            IEnumerable <TestInput> utOutput = jr.ReadJson <TestInput>();

            //Expected output
            jr.file_name = "../../IOFiles/UT_Result.Json";
            IEnumerable <TestInput> utCompare = jr.ReadJson <TestInput>();

            Compare(utOutput, utCompare);
        }
예제 #3
0
        private static void CaptureLog(string condition, string stackTrace, LogType type)
        {
            JsonNode node = JsonNode.NewTable();

            node["c"] = JsonNode.NewString(condition);
            node["s"] = JsonNode.NewString(stackTrace);
            node["t"] = JsonNode.NewInt((int)type);
            if (m_printer == null)
            {
                m_printer = new JsonPrinter();
            }
            byte[] bytes = m_printer.Bytes(node);
            NetworkManager.Instance.Send(ChannelType.Log, bytes);
        }
예제 #4
0
        private static string ToJson_UnsafeInternal(object p_target, System.Type p_type, bool p_prettyPrint, Serializer p_serializer)
        {
            if (p_type != null)
            {
                if (p_serializer == null)
                {
                    p_serializer = DefaultSerializer;
                }

                Data v_data = null;

                p_serializer.TrySerialize(p_type, p_target, out v_data, null);
                if (p_prettyPrint)
                {
                    return(JsonPrinter.PrettyJson(v_data));
                }
                else
                {
                    return(JsonPrinter.CompressedJson(v_data));
                }
            }
            return("");
        }
        /// <summary>
        /// Validates the Input Json file with the User defined Signal Rules
        /// </summary>
        /// <param name="jsonRules"></param>
        /// <param name="jsonInput"></param>
        public void Validation(IEnumerable <Rules> jsonRules, IEnumerable <RawInput> jsonInput)
        {
            JsonPrinter jp = new JsonPrinter();

            try
            {
                foreach (Rules rl in jsonRules)
                {
                    IEnumerable <RawInput> inputFiltered;
                    IEnumerable <RawInput> err;

                    inputFiltered = jsonInput.Cast <RawInput>().Where(x => x.Signal.ToLower() == rl.Signal.ToLower() && x.ValueType.ToLower() == rl.ValueType.ToLower()).ToList();

                    if (inputFiltered.Count() > 0)
                    {
                        if (rl.ValueType == "Integer")
                        {
                            switch (rl.Rule)
                            {
                            case ">":
                                err = inputFiltered.Cast <RawInput>().Where(x => Convert.ToDecimal(x.Value) > Convert.ToDecimal(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not Greater than " + rl.Value);
                                break;

                            case "=":
                                err = inputFiltered.Cast <RawInput>().Where(x => Convert.ToDecimal(x.Value) == Convert.ToDecimal(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not equal to " + rl.Value);
                                break;

                            case ">=":
                                err = inputFiltered.Cast <RawInput>().Where(x => Convert.ToDecimal(x.Value) >= Convert.ToDecimal(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not Greater than or equal to " + rl.Value);
                                break;

                            case "!=":
                                err = inputFiltered.Cast <RawInput>().Where(x => Convert.ToDecimal(x.Value) != Convert.ToDecimal(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should be equal to " + rl.Value);
                                break;

                            case "<=":
                                err = inputFiltered.Cast <RawInput>().Where(x => Convert.ToDecimal(x.Value) <= Convert.ToDecimal(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not less than or equal to" + rl.Value);
                                break;

                            case "<":
                                err = inputFiltered.Cast <RawInput>().Where(x => Convert.ToDecimal(x.Value) < Convert.ToDecimal(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not less than " + rl.Value);
                                break;

                            default:
                                Console.WriteLine("ERROR: Invalid RULE for the Signal {0} and Value Type {1} as {2}", rl.Signal, rl.ValueType, rl.Rule);
                                break;
                            }
                        }
                        else if (rl.ValueType == "String")
                        {
                            switch (rl.Rule)
                            {
                            case "=":
                                err = inputFiltered.Cast <RawInput>().Where(x => x.Value.ToLower() == rl.Value.ToLower()).ToList();
                                jp.PrintResult(err, "Value should not equal to " + rl.Value);
                                break;

                            case "!=":
                                err = inputFiltered.Cast <RawInput>().Where(x => x.Value.ToLower() != rl.Value.ToLower()).ToList();
                                jp.PrintResult(err, "Value should be equal to " + rl.Value);
                                break;

                            default:
                                Console.WriteLine("ERROR: Invalid RULE for the Signal {0} and Value Type {1} as {2}", rl.Signal, rl.ValueType, rl.Rule);
                                break;
                            }
                        }
                        else if (rl.ValueType == "DateTime")
                        {
                            switch (rl.Rule.ToLower())
                            {
                            case "today":
                                err = inputFiltered.Cast <RawInput>().Where(x => DateTimeConvertor(x.Value) > DateTime.Now).ToList();
                                jp.PrintResult(err, "Value should not Greater than " + rl.Value);
                                break;

                            case ">":
                                err = inputFiltered.Cast <RawInput>().Where(x => DateTimeConvertor(x.Value) > DateTimeConvertor(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not Greater than " + rl.Value);
                                break;

                            case "=":
                                err = inputFiltered.Cast <RawInput>().Where(x => DateTimeConvertor(x.Value) == DateTimeConvertor(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not equal to " + rl.Value);
                                break;

                            case ">=":
                                err = inputFiltered.Cast <RawInput>().Where(x => DateTimeConvertor(x.Value) >= DateTimeConvertor(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not Greater than or equal to " + rl.Value);
                                break;

                            case "!=":
                                err = inputFiltered.Cast <RawInput>().Where(x => DateTimeConvertor(x.Value) != DateTimeConvertor(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should be equal to " + rl.Value);
                                break;

                            case "<=":
                                err = inputFiltered.Cast <RawInput>().Where(x => DateTimeConvertor(x.Value) <= DateTimeConvertor(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not less than or equal to" + rl.Value);
                                break;

                            case "<":
                                err = inputFiltered.Cast <RawInput>().Where(x => DateTimeConvertor(x.Value) < DateTimeConvertor(rl.Value)).ToList();
                                jp.PrintResult(err, "Value should not less than " + rl.Value);
                                break;

                            default:
                                Console.WriteLine("ERROR: Invalid RULE for the Signal {0} and Value Type {1} as {2}", rl.Signal, rl.ValueType, rl.Rule);
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.Write("Error Occured: " + e);
            }
        }