public void TestParseWithFlagExclusions() { OptionTable T = new OptionTable(InfoTable); // Exclude flag3 to avoid parsing as OPT_ID.OPT_SLASH_C. InputArgumentList AL = T.ParseArgs(Args, out int MAI, out int MAC, /*FlagsToInclude=*/ 0, /*FlagsToExclude=*/ (int)OptionFlags.OptFlag3); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_A)); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_C)); Assert.IsTrue(!AL.HasArg(OPT_ID.OPT_SLASH_C)); // Exclude flag1 to avoid parsing as OPT_ID.OPT_C. AL = T.ParseArgs(Args, out MAI, out MAC, /*FlagsToInclude=*/ 0, /*FlagsToExclude=*/ (int)OptionFlags.OptFlag1); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_B)); Assert.IsTrue(!AL.HasArg(OPT_ID.OPT_C)); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_SLASH_C)); string[] NewArgs = new string[] { "/C", "foo", "--C=bar" }; AL = T.ParseArgs(NewArgs, out MAI, out MAC); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_SLASH_C)); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_C)); Assert.IsTrue("foo" == AL.GetLastArgValue(OPT_ID.OPT_SLASH_C)); Assert.IsTrue("bar" == AL.GetLastArgValue(OPT_ID.OPT_C)); }
public void TestParseAliasInGroup() { OptionTable T = new OptionTable(InfoTable); string[] MyArgs = new string[] { "-I" }; InputArgumentList AL = T.ParseArgs(MyArgs, out int MAI, out int MAC); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_H)); }
public void TestDoNotIgnoreCase() { OptionTable T = new OptionTable(InfoTable); string[] MyArgs = new string[] { "-a", "-joo" }; InputArgumentList AL = T.ParseArgs(MyArgs, out int MAI, out int MAC); Assert.IsTrue(!AL.HasArg(OPT_ID.OPT_A)); Assert.IsTrue(!AL.HasArg(OPT_ID.OPT_B)); }
public void TestSlurpJoinedEmpty() { OptionTable T = new OptionTable(InfoTable); string[] MyArgs = new string[] { "-A", "-slurpjoined" }; InputArgumentList AL = T.ParseArgs(MyArgs, out int MAI, out int MAC); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_A)); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_SlurpJoined)); Assert.IsTrue(AL.GetAllArgValues(OPT_ID.OPT_SlurpJoined).Count == 0U); }
public void TestAliasArgs() { OptionTable T = new OptionTable(InfoTable); string[] MyArgs = new string[] { "-J", "-Joo" }; InputArgumentList AL = T.ParseArgs(MyArgs, out int MAI, out int MAC); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_B)); Assert.IsTrue("foo" == AL.GetAllArgValues(OPT_ID.OPT_B)[0]); Assert.IsTrue("bar" == AL.GetAllArgValues(OPT_ID.OPT_B)[1]); }
public void TestOptionParsing() { OptionTable T = new OptionTable(InfoTable); int FlagsToInclude = 0; int FlagsToExclude = 0; InputArgumentList al = T.ParseArgs(Args, out int missingArgIndex, out int missingArgCount, FlagsToInclude, FlagsToExclude); // Check they all exist. Assert.IsTrue(al.HasArg(OPT_ID.OPT_A)); Assert.IsTrue(al.HasArg(OPT_ID.OPT_B)); Assert.IsTrue(al.HasArg(OPT_ID.OPT_C)); Assert.IsTrue(al.HasArg(OPT_ID.OPT_D)); Assert.IsTrue(al.HasArg(OPT_ID.OPT_E)); Assert.IsTrue(al.HasArg(OPT_ID.OPT_F)); Assert.IsTrue(al.HasArg(OPT_ID.OPT_G)); // Check the values. Assert.IsTrue("hi" == al.GetLastArgValue(OPT_ID.OPT_B)); Assert.IsTrue("bye" == al.GetLastArgValue(OPT_ID.OPT_C)); Assert.IsTrue("adena" == al.GetLastArgValue(OPT_ID.OPT_D)); List <string> Es = al.GetAllArgValues(OPT_ID.OPT_E); Assert.IsTrue("apple" == Es[0]); Assert.IsTrue("bloom" == Es[1]); Assert.IsTrue("42" == al.GetLastArgValue(OPT_ID.OPT_F)); List <string> Gs = al.GetAllArgValues(OPT_ID.OPT_G); Assert.IsTrue("chuu" == Gs[0]); Assert.IsTrue("2" == Gs[1]); // Check the help text. StringBuilder RSO = new StringBuilder(); T.PrintHelp(RSO, "test", "title!"); string Help = RSO.ToString(); Assert.IsTrue(Help.Length != Help.IndexOf("-A", StringComparison.Ordinal)); // Test aliases. var Cs = al.Filtered(OPT_ID.OPT_C); Assert.IsTrue(Cs.First() != Cs.Last()); Assert.IsTrue("desu" == Cs.First().GetValue()); List <string> ASL = new List <string>(); Cs.First().Render(al, ASL); Assert.IsTrue(2u == ASL.Count); Assert.IsTrue("-C" == ASL[0]); Assert.IsTrue("desu" == ASL[1]); }
public void TestSlurpJoinedButSeparate() { OptionTable T = new OptionTable(InfoTable); string[] MyArgs = new string[] { "-A", "-slurpjoined", "foo", "bar", "baz" }; InputArgumentList AL = T.ParseArgs(MyArgs, out int MAI, out int MAC); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_A)); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_SlurpJoined)); Assert.IsTrue(3U == AL.GetAllArgValues(OPT_ID.OPT_SlurpJoined).Count); Assert.IsTrue("foo" == AL.GetAllArgValues(OPT_ID.OPT_SlurpJoined)[0]); Assert.IsTrue("bar" == AL.GetAllArgValues(OPT_ID.OPT_SlurpJoined)[1]); Assert.IsTrue("baz" == AL.GetAllArgValues(OPT_ID.OPT_SlurpJoined)[2]); }
public void TestFlagAliasToJoined() { OptionTable T = new OptionTable(InfoTable); // Check that a flag alias provides an empty argument to a joined option. string[] MyArgs = new string[] { "-K" }; InputArgumentList AL = T.ParseArgs(MyArgs, out int MAI, out int MAC); Assert.IsTrue(AL.Size() == 1U); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_B)); var allArgs = AL.GetAllArgValues(OPT_ID.OPT_B); Assert.IsTrue(1U == allArgs.Count); Assert.IsTrue("" == AL.GetAllArgValues(OPT_ID.OPT_B)[0]); }
public void TestSlurp() { OptionTable T = new OptionTable(InfoTable); string[] MyArgs = new string[] { "-A", "-slurp", "-B", "--", "foo" }; InputArgumentList AL = T.ParseArgs(MyArgs, out int MAI, out int MAC); Assert.IsTrue(AL.Size() == 2U); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_A)); Assert.IsTrue(!AL.HasArg(OPT_ID.OPT_B)); Assert.IsTrue(AL.HasArg(OPT_ID.OPT_Slurp)); Assert.IsTrue(3U == AL.GetAllArgValues(OPT_ID.OPT_Slurp).Count); Assert.IsTrue("-B" == AL.GetAllArgValues(OPT_ID.OPT_Slurp)[0]); Assert.IsTrue("--" == AL.GetAllArgValues(OPT_ID.OPT_Slurp)[1]); Assert.IsTrue("foo" == AL.GetAllArgValues(OPT_ID.OPT_Slurp)[2]); }
private void EditGroup(int groupIdx) { var group = _mod.Groups[groupIdx]; using var id = ImRaii.PushId(groupIdx); using var frame = ImRaii.FramedGroup($"Group #{groupIdx + 1}"); using var style = ImRaii.PushStyle(ImGuiStyleVar.CellPadding, _cellPadding) .Push(ImGuiStyleVar.ItemSpacing, _itemSpacing); if (Input.Text("##Name", groupIdx, Input.None, group.Name, out var newGroupName, 256, _window._inputTextWidth.X)) { Penumbra.ModManager.RenameModGroup(_mod, groupIdx, newGroupName); } ImGuiUtil.HoverTooltip("Group Name"); ImGui.SameLine(); if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.Trash.ToIconString(), _window._iconButtonSize, "Delete this option group.\nHold Control while clicking to delete.", !ImGui.GetIO().KeyCtrl, true)) { _delayedActions.Enqueue(() => Penumbra.ModManager.DeleteModGroup(_mod, groupIdx)); } ImGui.SameLine(); if (Input.Priority("##Priority", groupIdx, Input.None, group.Priority, out var priority, 50 * ImGuiHelpers.GlobalScale)) { Penumbra.ModManager.ChangeGroupPriority(_mod, groupIdx, priority); } ImGuiUtil.HoverTooltip("Group Priority"); DrawGroupCombo(group, groupIdx); ImGui.SameLine(); var tt = groupIdx == 0 ? "Can not move this group further upwards." : $"Move this group up to group {groupIdx}."; if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.ArrowUp.ToIconString(), _window._iconButtonSize, tt, groupIdx == 0, true)) { _delayedActions.Enqueue(() => Penumbra.ModManager.MoveModGroup(_mod, groupIdx, groupIdx - 1)); } ImGui.SameLine(); tt = groupIdx == _mod.Groups.Count - 1 ? "Can not move this group further downwards." : $"Move this group down to group {groupIdx + 2}."; if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.ArrowDown.ToIconString(), _window._iconButtonSize, tt, groupIdx == _mod.Groups.Count - 1, true)) { _delayedActions.Enqueue(() => Penumbra.ModManager.MoveModGroup(_mod, groupIdx, groupIdx + 1)); } ImGui.SameLine(); if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.Edit.ToIconString(), _window._iconButtonSize, "Edit group description.", false, true)) { _delayedActions.Enqueue(() => DescriptionEdit.OpenPopup(_mod, groupIdx)); } ImGui.SameLine(); var fileName = group.FileName(_mod.ModPath, groupIdx); var fileExists = File.Exists(fileName); tt = fileExists ? $"Open the {group.Name} json file in the text editor of your choice." : $"The {group.Name} json file does not exist."; if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.FileExport.ToIconString(), _window._iconButtonSize, tt, !fileExists, true)) { Process.Start(new ProcessStartInfo(fileName) { UseShellExecute = true }); } ImGui.Dummy(_window._defaultSpace); OptionTable.Draw(this, groupIdx); }