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" ); } }
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(); } }