private void OptionBoolTests() { // bool option tests OptionParser optParser; OptionParser.OptionBool optBool1 = new OptionParser.OptionBool("-a", "--boola", "bool help"); OptionParser.OptionBool optBool2 = new OptionParser.OptionBool("-b", "--boolb", "bool help"); TEST(optBool1.ShortName == "-a"); TEST(optBool1.LongName == "--boola"); TEST(optBool1.Value == false); TEST(optBool2.ShortName == "-b"); TEST(optBool2.LongName == "--boolb"); TEST(optBool2.Value == false); // no args optParser = new OptionParser(new string[] {}); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 0); TEST(optBool1.Value == false); TEST(optBool2.Value == false); // positional args only optParser = new OptionParser(new string[] { "arg1", "arg2" }); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optBool1.Value == false); TEST(optBool2.Value == false); // 1 good arg optParser = new OptionParser(new string[] { "-a", "arg1", "arg2" }); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optBool1.Value == true); TEST(optBool2.Value == false); optParser = new OptionParser(new string[] { "--boola", "arg1", "arg2" }); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optBool1.Value == true); TEST(optBool2.Value == false); optParser = new OptionParser(new string[] { "arg1", "-a", "arg2" }); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optBool1.Value == true); TEST(optBool2.Value == false); optParser = new OptionParser(new string[] { "arg1", "arg2", "-a" }); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optBool1.Value == true); TEST(optBool2.Value == false); // 2 good args optParser = new OptionParser(new string[] { "-b", "-a", "arg1", "arg2" }); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optBool1.Value == true); TEST(optBool2.Value == true); optParser = new OptionParser(new string[] { "-b", "arg1", "arg2", "-a" }); optParser.AddOption(optBool1); optParser.AddOption(optBool2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optBool1.Value == true); TEST(optBool2.Value == true); // help tests OptionParser.OptionHelp help; help = new OptionParser.OptionHelp(); optBool1 = new OptionParser.OptionBool("-a", null, "bool help"); optBool1.AppendHelp(help); TEST(help.ToString() == "options:\n -a bool help\n"); help = new OptionParser.OptionHelp(); optBool1 = new OptionParser.OptionBool(null, "--boola", "bool help"); optBool1.AppendHelp(help); TEST(help.ToString() == "options:\n --boola bool help\n"); help = new OptionParser.OptionHelp(); optBool1 = new OptionParser.OptionBool("-a", "--boola", "bool help"); optBool1.AppendHelp(help); TEST(help.ToString() == "options:\n -a, --boola bool help\n"); help = new OptionParser.OptionHelp(); optBool1 = new OptionParser.OptionBool("-a", "--boolaaaaaaaaaa", "bool help"); optBool1.AppendHelp(help); TEST(help.ToString() == "options:\n -a, --boolaaaaaaaaaa bool help\n"); help = new OptionParser.OptionHelp(); optBool1 = new OptionParser.OptionBool("-a", "--boolaaaaaaaaaaa", "bool help"); optBool1.AppendHelp(help); TEST(help.ToString() == "options:\n -a, --boolaaaaaaaaaaa\n bool help\n"); }
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"); }
private void OptionIntTests() { // int option tests OptionParser optParser; OptionParser.OptionInt optInt1 = new OptionParser.OptionInt("-a", "--inta", 123, "int help", "INT"); OptionParser.OptionInt optInt2 = new OptionParser.OptionInt("-b", "--intb", 456, "int help", "INT"); TEST(optInt1.ShortName == "-a"); TEST(optInt1.LongName == "--inta"); TEST(optInt1.Value == 123); TEST(optInt2.ShortName == "-b"); TEST(optInt2.LongName == "--intb"); TEST(optInt2.Value == 456); // no args optParser = new OptionParser(new string[] {}); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 0); TEST(optInt1.Value == 123); TEST(optInt2.Value == 456); // positional args only optParser = new OptionParser(new string[] { "arg1", "arg2" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optInt1.Value == 123); TEST(optInt2.Value == 456); // 1 good arg optParser = new OptionParser(new string[] { "-a", "789", "arg1", "arg2" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optInt1.Value == 789); TEST(optInt2.Value == 456); optParser = new OptionParser(new string[] { "--inta", "789", "arg1", "arg2" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optInt1.Value == 789); TEST(optInt2.Value == 456); optParser = new OptionParser(new string[] { "arg1", "-a", "789", "arg2" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optInt1.Value == 789); TEST(optInt2.Value == 456); optParser = new OptionParser(new string[] { "arg1", "arg2", "-a", "789" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optInt1.Value == 789); TEST(optInt2.Value == 456); // 2 good args optParser = new OptionParser(new string[] { "-b", "987", "-a", "789", "arg1", "arg2" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optInt1.Value == 789); TEST(optInt2.Value == 987); optParser = new OptionParser(new string[] { "-b", "987", "arg1", "arg2", "-a", "789" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); optParser.Parse(); TEST(optParser.PosArgs.Count == 2); TEST(optParser.PosArgs[0] == "arg1"); TEST(optParser.PosArgs[1] == "arg2"); TEST(optInt1.Value == 789); TEST(optInt2.Value == 987); // missing option value optParser = new OptionParser(new string[] { "-b", "-a", "789", "arg1", "arg2" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); TEST_THROWS(typeof(OptionParser.OptionParserError), optParser, "Parse"); TEST(optParser.PosArgs.Count == 0); TEST(optInt1.Value == 123); TEST(optInt2.Value == 456); optParser = new OptionParser(new string[] { "-b", "987", "arg1", "arg2", "-a" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); TEST_THROWS(typeof(OptionParser.OptionParserError), optParser, "Parse"); TEST(optParser.PosArgs.Count == 0); TEST(optInt1.Value == 123); TEST(optInt2.Value == 456); // bad option value optParser = new OptionParser(new string[] { "-b", "98w7", "-a", "789", "arg1", "arg2" }); optParser.AddOption(optInt1); optParser.AddOption(optInt2); TEST_THROWS(typeof(OptionParser.OptionParserError), optParser, "Parse"); TEST(optParser.PosArgs.Count == 0); TEST(optInt1.Value == 123); TEST(optInt2.Value == 456); // help tests OptionParser.OptionHelp help; help = new OptionParser.OptionHelp(); optInt1 = new OptionParser.OptionInt("-a", null, 123, "int help", "INT"); optInt1.AppendHelp(help); TEST(help.ToString() == "options:\n -a INT int help\n"); help = new OptionParser.OptionHelp(); optInt1 = new OptionParser.OptionInt(null, "--inta", 123, "int help", "INT"); optInt1.AppendHelp(help); TEST(help.ToString() == "options:\n --inta=INT int help\n"); help = new OptionParser.OptionHelp(); optInt1 = new OptionParser.OptionInt("-a", "--inta", 123, "int help", "INT"); optInt1.AppendHelp(help); TEST(help.ToString() == "options:\n -a INT, --inta=INT int help\n"); help = new OptionParser.OptionHelp(); optInt1 = new OptionParser.OptionInt("-a", "--inta", 123, "int help", "INTEGER"); optInt1.AppendHelp(help); TEST(help.ToString() == "options:\n -a INTEGER, --inta=INTEGER\n int help\n"); }