static void Main(string[] aArgs) { Helper helper = new Helper(aArgs); OptionParser optParser = helper.OptionParser; OptionParser.OptionString option1 = new OptionParser.OptionString("-1", "--protocol", "UDP", "Protocol (UDP or TCP)", "PROTOCOL"); OptionParser.OptionString option2 = new OptionParser.OptionString("-2", "--clientaddr", "127.0.0.1", "Client IP address", "CLIENTADDRESS"); OptionParser.OptionInt option3 = new OptionParser.OptionInt("-3", "--clientport", 51936, "Client port", "CLIENTPORT"); OptionParser.OptionString option4 = new OptionParser.OptionString("-4", "--serveraddr", "127.0.0.1", "Server IP address", "SERVERADDRESS"); OptionParser.OptionInt option5 = new OptionParser.OptionInt("-5", "--serverport", 51936, "Server port", "SERVERPORT"); OptionParser.OptionInt option6 = new OptionParser.OptionInt("-6", "--size", 4, "Size of each packet (bytes)", "PACKETSIZE"); OptionParser.OptionInt option7 = new OptionParser.OptionInt("-7", "--total", 20, "Total number of packets to send", "PACKETTOTAL"); OptionParser.OptionInt option8 = new OptionParser.OptionInt("-8", "--delay", 0, "Delay between packets (0.1ms steps)", "PACKETDELAY"); optParser.AddOption(option1); optParser.AddOption(option2); optParser.AddOption(option3); optParser.AddOption(option4); optParser.AddOption(option5); optParser.AddOption(option6); optParser.AddOption(option7); helper.ProcessCommandLine(); Client test = new Client(option1.Value, option2.Value, option3.Value, option4.Value, option5.Value, option6.Value, option7.Value, option8.Value); // run the test ... test.ClientServerTest(); helper.Dispose(); }
private void OptionStringTests() { // string option tests OptionParser optParser; OptionParser.OptionString optString1 = new OptionParser.OptionString("-a", "--stringa", "defaultstring1", "string help", "STRING"); OptionParser.OptionString optString2 = new OptionParser.OptionString("-b", "--stringb", "defaultstring2", "string help", "STRING"); TEST(optString1.ShortName == "-a"); TEST(optString1.LongName == "--stringa"); TEST(optString1.Value == "defaultstring1"); TEST(optString2.ShortName == "-b"); TEST(optString2.LongName == "--stringb"); TEST(optString2.Value == "defaultstring2"); // no args optParser = new OptionParser(new string[] {}); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 0); TEST(optString1.Value == "defaultstring1"); TEST(optString2.Value == "defaultstring2"); // positional args only optParser = new OptionParser(new string[] { "arg1", "arg2" }); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optString1.Value == "defaultstring1"); TEST(optString2.Value == "defaultstring2"); // 1 good arg optParser = new OptionParser(new string[] { "-a", "stringa", "arg1", "arg2" }); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optString1.Value == "stringa"); TEST(optString2.Value == "defaultstring2"); optParser = new OptionParser(new string[] { "--stringa", "stringa", "arg1", "arg2" }); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optString1.Value == "stringa"); TEST(optString2.Value == "defaultstring2"); optParser = new OptionParser(new string[] { "arg1", "-a", "stringa", "arg2" }); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optString1.Value == "stringa"); TEST(optString2.Value == "defaultstring2"); optParser = new OptionParser(new string[] { "arg1", "arg2", "-a", "stringa" }); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optString1.Value == "stringa"); TEST(optString2.Value == "defaultstring2"); // 2 good args optParser = new OptionParser(new string[] { "-b", "stringb", "-a", "stringa", "arg1", "arg2" }); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optString1.Value == "stringa"); TEST(optString2.Value == "stringb"); optParser = new OptionParser(new string[] { "-b", "stringb", "arg1", "arg2", "-a", "stringa" }); optParser.AddOption(optString1); optParser.AddOption(optString2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optString1.Value == "stringa"); TEST(optString2.Value == "stringb"); // missing option value optParser = new OptionParser(new string[] { "-b", "-a", "stringa", "arg1", "arg2" }); optParser.AddOption(optString1); optParser.AddOption(optString2); TEST_THROWS(typeof(OptionParser.OptionParserError), optParser, "Parse"); TEST(optParser.PosArgs.Count == 0); TEST(optString1.Value == "defaultstring1"); TEST(optString2.Value == "defaultstring2"); optParser = new OptionParser(new string[] { "-b", "stringb", "arg1", "arg2", "-a" }); optParser.AddOption(optString1); optParser.AddOption(optString2); TEST_THROWS(typeof(OptionParser.OptionParserError), optParser, "Parse"); TEST(optParser.PosArgs.Count == 0); TEST(optString1.Value == "defaultstring1"); TEST(optString2.Value == "defaultstring2"); // help tests OptionParser.OptionHelp help; help = new OptionParser.OptionHelp(); optString1 = new OptionParser.OptionString("-a", null, "defaultstring1", "string help", "STRING"); optString1.AppendHelp(help); TEST(help.ToString() == "options:\n -a STRING string help\n"); help = new OptionParser.OptionHelp(); optString1 = new OptionParser.OptionString(null, "--stringa", "defaultstring1", "string help", "STRING"); optString1.AppendHelp(help); TEST(help.ToString() == "options:\n --stringa=STRING string help\n"); help = new OptionParser.OptionHelp(); optString1 = new OptionParser.OptionString("-a", "--stra", "defaultstring1", "string help", "STR"); optString1.AppendHelp(help); TEST(help.ToString() == "options:\n -a STR, --stra=STR string help\n"); help = new OptionParser.OptionHelp(); optString1 = new OptionParser.OptionString("-a", "--stringa", "defaultstring1", "string help", "STRING"); optString1.AppendHelp(help); TEST(help.ToString() == "options:\n -a STRING, --stringa=STRING\n string help\n"); }
public override void Test() { // Option creation tests // no option names TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), null, null, "defaultstring", "test string help", "STRING"); // bad short option names TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), "", null, "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), "s", null, "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), "-", null, "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), "--", null, "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), "-sd", null, "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), "--sd", null, "defaultstring", "test string help", "STRING"); // bad long option names TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), null, "", "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), null, "s", "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), null, "-", "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), null, "-s", "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), null, "--", "defaultstring", "test string help", "STRING"); TEST_THROWS_NEW(typeof(AssertionError), typeof(OptionParser.OptionString), null, "-sd", "defaultstring", "test string help", "STRING"); // Some tests for different option types OptionStringTests(); OptionIntTests(); OptionBoolTests(); // Parsing tests OptionParser optParser = new OptionParser(new string[] { "-a", "aval", "--bc", "bcval" }); OptionParser.OptionString optString1 = new OptionParser.OptionString("-a", null, "defaultstring", "string help", "STRING"); OptionParser.OptionString optString2 = new OptionParser.OptionString(null, "--bc", "defaultstring", "string help", "STRING"); OptionParser.OptionString optString3 = new OptionParser.OptionString("-a", "--bc", "defaultstring", "string help", "STRING"); OptionParser.OptionInt optInt4 = new OptionParser.OptionInt("-a", null, 123, "int help", "INT"); OptionParser.OptionBool optBool5 = new OptionParser.OptionBool(null, "--bc", "bool help"); // test adding already existing options optParser.AddOption(optString1); optParser.AddOption(optString2); TEST_THROWS(typeof(AssertionError), optParser, "AddOption", optString1); TEST_THROWS(typeof(AssertionError), optParser, "AddOption", optString2); TEST_THROWS(typeof(AssertionError), optParser, "AddOption", optString3); TEST_THROWS(typeof(AssertionError), optParser, "AddOption", optInt4); TEST_THROWS(typeof(AssertionError), optParser, "AddOption", optBool5); optParser.Parse(); TEST(optParser.PosArgs.Count == 0); TEST(optString1.Value == "aval"); TEST(optString2.Value == "bcval"); TEST(optString3.Value == "defaultstring"); TEST(optInt4.Value == 123); TEST(optBool5.Value == false); // test undefined options optParser = new OptionParser(new string[] { "-d" }); TEST_THROWS(typeof(OptionParser.OptionParserError), optParser, "Parse"); TEST(optParser.PosArgs.Count == 0); optParser = new OptionParser(new string[] { "--de" }); TEST_THROWS(typeof(OptionParser.OptionParserError), optParser, "Parse"); TEST(optParser.PosArgs.Count == 0); }
static void Main(string[] aArgs) { HelperVolkano helper = new HelperVolkano(aArgs); OptionParser optParser = helper.OptionParser; optParser.Usage = "usage: Reprog.exe [options] [target ugly name] [rom file | bundle file]"; OptionParser.OptionBool optFallback = new OptionParser.OptionBool("-f", "--fallback", "Target fallback rather than main"); OptionParser.OptionBool optNoExec = new OptionParser.OptionBool(null, "--noexec", "Do not reboot target after reprogramming"); OptionParser.OptionBool optWait = new OptionParser.OptionBool("-w", "--wait", "Wait to discover rebooted target after reprogramming (ignored with --noexec)"); OptionParser.OptionBool optNoTrust = new OptionParser.OptionBool(null, "--notrust", "Reprogram to factory fresh paying no attention to current flash contents"); OptionParser.OptionBool optBootstrap = new OptionParser.OptionBool(null, "--bootstrap", "Additionally reprogram the boostrap"); OptionParser.OptionBool optUnsafe = new OptionParser.OptionBool(null, "--unsafe", "Program directly to flash / no 2 phase programming."); OptionParser.OptionString optEmulator = new OptionParser.OptionString("-e", "--emulator", "", "Flash emulator name (SrecA)", "Emulator name"); OptionParser.OptionString optOutput = new OptionParser.OptionString("-o", "--output", "", "Flash emulator output filename", "Output filename"); optParser.AddOption(optFallback); optParser.AddOption(optNoExec); optParser.AddOption(optWait); optParser.AddOption(optNoTrust); optParser.AddOption(optBootstrap); optParser.AddOption(optUnsafe); optParser.AddOption(optEmulator); optParser.AddOption(optOutput); helper.Start(); if (optParser.PosArgs.Count != 2) { Console.WriteLine(optParser.Help()); System.Environment.Exit(1); } string uglyname = optParser.PosArgs[0]; string xmlfile = optParser.PosArgs[1]; // create the console IConsole console = new FlashInfoConsole(); // create the reprogrammer Reprogrammer reprog = new Reprogrammer(helper.IpAddress, console, uglyname, xmlfile); reprog.Fallback = optFallback.Value; reprog.NoExec = optNoExec.Value; reprog.Wait = optWait.Value; reprog.NoTrust = optNoTrust.Value; reprog.Bootstrap = optBootstrap.Value; reprog.Emulator = optEmulator.Value; reprog.Output = optOutput.Value; reprog.Unsafe = optUnsafe.Value; // reprog if (!reprog.Execute()) { reprog.Close(); System.Environment.Exit(1); } reprog.Close(); System.Environment.Exit(0); }