public void Read() { var r = new System.IO.StringReader(@" # this is a comment argument1 argument2 argument 3 ""argument 4"" ""Quoted argument with a \"" character"" <<EndOfText This is a multiline string<<EndOfText "); var a = ArgumentFile.Read(r).ToArray(); Assert.AreEqual("argument1", a[0]); Assert.AreEqual("argument2", a[1]); Assert.AreEqual("argument", a[2]); Assert.AreEqual("3", a[3]); Assert.AreEqual("argument 4", a[4]); Assert.AreEqual("Quoted argument with a \" character", a[5]); Assert.AreEqual(@"This is a multiline string" , a[6]); }
public static List<OpenMI.Standard2.IArgument> ToArgument2(Argument1 arg1) { string key = arg1.Key; string value = arg1.Value; string description = arg1.Description; bool readOnly = arg1.ReadOnly; string[] parts = key.Split('.'); var args = new List<OpenMI.Standard2.IArgument>(); bool sdk1Arg = parts[0] == "FluidEarth_SDK" || parts[0] == "OpenWEB_SDK"; if (parts.Length == 3 && sdk1Arg) { Identity identity = new Identity(key, parts[2], description); switch (parts[1]) { case "ArgBool": args.Add(new Argument<bool>(identity, System.Convert.ToBoolean(value), false, readOnly)); break; case "ArgInt": args.Add(new Argument<int>(identity, System.Convert.ToInt32(value), false, readOnly)); break; case "ArgDouble": case "ArgJulian": args.Add(new Argument<double>(identity, System.Convert.ToDouble(value), false, readOnly)); break; case "ArgResource": case "ArgFile": var file = new ArgumentFile(identity); file.IsReadOnly = readOnly; file.ValueAsString = value; args.Add(file); break; case "ArgPath": var folder = new ArgumentFolder(identity); folder.IsReadOnly = readOnly; folder.ValueAsString = value; args.Add(folder); break; case "ArgEnum": if (parts[2] == "LoggerSeverity") { switch (value) { case "Error": case "Warning": break; case "Event": case "Status": args.Add(new Argument<bool>(new Identity( "FluidEarth2.Sdk.BaseComponent.TraceStatus", "TraceStatus", string.Empty), true, false, readOnly)); break; case "Progress": case "Debug1": case "Debug2": args.Add(new Argument<bool>(new Identity( "FluidEarth2.Sdk.BaseComponent.TraceStatus", "TraceStatus", string.Empty), true, false, readOnly)); args.Add(new Argument<bool>(new Identity( "FluidEarth2.Sdk.BaseComponent.TraceConvertors", "TraceConvertors", string.Empty), true, false, readOnly)); break; default: throw new NotImplementedException(); } } break; default: args.Add(new Argument<string>(new Identity(key, key, description), value, false, readOnly)); break; } } else if (parts.Length == 4 && sdk1Arg && parts[1] == "Remoting") { switch (parts[3]) { case "Protocol": switch (value) { case "HTTP": args.Add(new Argument<RemotingProtocol>(new Identity( "FluidEarth2.Sdk.RemoteData.Protocol", "RemoteData.Protocol", string.Empty), RemotingProtocol.http, false, readOnly)); break; case "TCP": args.Add(new Argument<RemotingProtocol>(new Identity( "FluidEarth2.Sdk.RemoteData.Protocol", "RemoteData.Protocol", string.Empty), RemotingProtocol.tcp, false, readOnly)); break; case "IPC": args.Add(new Argument<RemotingProtocol>(new Identity( "FluidEarth2.Sdk.RemoteData.Protocol", "RemoteData.Protocol", string.Empty), RemotingProtocol.ipc, false, readOnly)); break; default: throw new NotImplementedException(); } break; case "Host": args.Add(new Argument<string>(new Identity( "FluidEarth2.Sdk.RemoteData.Host", "RemoteData.Host", string.Empty), value, false, readOnly)); break; case "Port": args.Add(new Argument<int>(new Identity( "FluidEarth2.Sdk.RemoteData.Port", "RemoteData.Port", string.Empty), System.Convert.ToInt32(value), false, readOnly)); break; case "UniqueId": args.Add(new Argument<string>(new Identity( key, key, description), value, false, readOnly)); break; case "Uri": args.Add(new Argument<Uri>(new Identity( "FluidEarth2.Sdk.RemoteData.Uri", "RemoteData.Uri", string.Empty), new Uri(value), false, readOnly)); break; case "ServerProcessCreate": args.Add(new Argument<RemotingProtocol>(new Identity( "FluidEarth2.Sdk.RemoteData.Protocol", "RemoteData.Protocol", string.Empty), RemotingProtocol.ipcAuto, false, readOnly)); break; case "ServerConfigFile": args.Add(new Argument<string>(new Identity( key, key, description), value, false, readOnly)); break; case "ConnectionSleep": args.Add(new Argument<int>(new Identity( "FluidEarth2.Sdk.RemoteData.ConnectionSleep", "RemoteData.ConnectionSleep", string.Empty), System.Convert.ToInt32(value), false, readOnly)); break; case "TimeOut": args.Add(new Argument<uint>(new Identity( "FluidEarth2.Sdk.RemoteData.ConnectionTimeOut", "RemoteData.ConnectionTimeOut", string.Empty), System.Convert.ToUInt32(value), false, readOnly)); break; default: args.Add(new Argument<string>(new Identity( key, key, description), value, false, readOnly)); break; } } else args.Add(new Argument<string>(new Identity( key, key, description), value, false, readOnly)); return args; }