コード例 #1
0
        public void Test_TryParseDynamic()
        {
            var     lines = s_test2_hron.ReadLines().ToArray();
            dynamic dyn;

            HRONDynamicParseError[] errors;
            var result = HRONSerializer.TryParseDynamic(int.MaxValue, lines, out dyn, out errors);

            if (TestFor.Equality(true, result, "HRON should be parsed successfully"))
            {
                MyFlag myFlag        = dyn.Common.MyFlag;
                MyFlag myMissingFlag = dyn.Common.MyMissingFlag;
                TestFor.Equality((int)MyFlag.MyFlagValue, (int)myFlag, "Expects MyFlagValue");
                TestFor.Equality((int)MyFlag.MyDefaultValue, (int)myMissingFlag, "Expects the default MyFlag");

                dynamic connections = dyn.DataBaseConnection;
                if (TestFor.Equality(2, connections.GetCount(), "Expects two database connections"))
                {
                    {
                        var connection = connections[0];

                        string name             = connection.Name;
                        string connectionString = connection.ConnectionString;
                        string timeOut          = connection.TimeOut;
                        int    parsedTimeOut    = connection.TimeOut;
                        int?   optParsedTimeOut = connection.TimeOut;
                        int[]  arrParsedTimeOut = connection.TimeOut;
                        TestFor.Equality(
                            "CustomerDB",
                            name,
                            "Expects CustomerDB name"
                            );
                        TestFor.Equality(
                            @"Data Source=.\SQLEXPRESS;Initial Catalog=Customers",
                            connectionString,
                            "Expects CustomerDB connection"
                            );
                        TestFor.Equality(
                            @"10",
                            timeOut,
                            "Expects CustomerDB timeout"
                            );
                        TestFor.Equality(
                            10,
                            parsedTimeOut,
                            "Expects parsed CustomerDB timeout"
                            );
                        if (TestFor.Equality(
                                true,
                                optParsedTimeOut.HasValue,
                                "Expects parsed CustomerDB timeout"
                                ))
                        {
                            TestFor.Equality(
                                10,
                                optParsedTimeOut.Value,
                                "Expects parsed CustomerDB timeout"
                                );
                        }
                        if (TestFor.Equality(
                                1,
                                arrParsedTimeOut.Length,
                                "Expects parsed CustomerDB timeout"
                                ))
                        {
                            TestFor.Equality(
                                10,
                                arrParsedTimeOut[0],
                                "Expects parsed CustomerDB timeout"
                                );
                        }
                    }
                    {
                        var connection = connections[1];

                        string name             = connection.Name;
                        string connectionString = connection.ConnectionString;
                        string timeOut          = connection.TimeOut;
                        int    parsedTimeOut    = connection.TimeOut;
                        int?   optParsedTimeOut = connection.TimeOut;
                        int[]  arrParsedTimeOut = connection.TimeOut;

                        TestFor.Equality(
                            "PartnerDB",
                            name,
                            "Expects PartnerDB name"
                            );
                        TestFor.Equality(
                            @"Data Source=.\SQLEXPRESS;Initial Catalog=Partners",
                            connectionString,
                            "Expects PartnerDB connection"
                            );
                        TestFor.Equality(
                            "",
                            timeOut,
                            "Expects no PartnerDB timeout"
                            );
                        TestFor.Equality(
                            0,
                            parsedTimeOut,
                            "Expects no parsed CustomerDB timeout"
                            );
                        TestFor.Equality(
                            false,
                            optParsedTimeOut.HasValue,
                            "Expects no parsed CustomerDB timeout"
                            );
                        TestFor.Equality(
                            0,
                            arrParsedTimeOut.Length,
                            "Expects no parsed CustomerDB timeout"
                            );
                    }
                }
                var value = HRONSerializer.DynamicAsString(dyn);

                TestFor.Equality(
                    s_test2_hron,
                    value,
                    "HRON after deserialize/serialize to object should be identical to test case"
                    );
            }
        }
コード例 #2
0
        public static void Run(string[] args)
        {
            Partial_ConsoleAppStarts();
            try
            {
                Log.HighLight("{0} is starting...", s_consoleName);
                Thread.CurrentThread.CurrentCulture = Config.DefaultCulture;
                Environment.CurrentDirectory        = AppDomain.CurrentDomain.BaseDirectory;

                object config;
                var    configFile = "{0}.ini".FormatWith(s_consoleName);
                if (File.Exists(configFile))
                {
                    Log.Info("Loading config file: {0}", configFile);
                    using (var streamReader = new StreamReader(configFile))
                    {
                        HRONDynamicParseError[] parserErrors;
                        if (!HRONSerializer.TryParseDynamic(
                                int.MaxValue,
                                streamReader.ReadLines().Select(x => x.ToSubString()),
                                out config,
                                out parserErrors
                                ))
                        {
                            throw new ExitCodeException(ExitCode.InvalidConfigFile);
                        }
                    }
                }
                else
                {
                    config = HRONObject.Empty;
                }

                Log.Info("Initial setup is done, executing main program");

                Partial_Run(args, config);

                Log.Success("{0} completed", s_consoleName);
            }
            catch (ExitCodeException exc)
            {
                Environment.ExitCode = (int)exc.ExitCode;
                Log.Exception(
                    "Terminated {0} {1}({2:000}), caught exception: {3}",
                    s_consoleName,
                    exc.ExitCode,
                    Environment.ExitCode,
                    exc
                    );
            }
            catch (Exception exc)
            {
                Environment.ExitCode = 999;
                Log.Exception(
                    "Terminated {0} Unknown({1:000}), caught exception: {2}",
                    s_consoleName,
                    Environment.ExitCode,
                    exc
                    );
            }
            finally
            {
                Partial_ConsoleAppStops();
            }
        }