public void FindsCommandGroupInSingleAssembly(Type commandGroupType)
            {
                var builder = new CommandTreeBuilder(_singleAssemblyProvider);
                var tree    = builder.BuildBaseTree();

                var found = tree.CommandGroups.Any(q => q.CommandGroupType == commandGroupType);

                Assert.True(found, $"CommandGroup of type {commandGroupType.Name} has not been found.");
            }
            public void DoesNotFillOptionsAndArguments()
            {
                var builder  = new CommandTreeBuilder(_singleAssemblyProvider);
                var tree     = builder.BuildBaseTree();
                var commands = from commandGroup in tree.CommandGroups
                               from command in commandGroup.Commands
                               where command.Arguments.Any() || command.Options.Any()
                               select new { commandGroup, command };

                Assert.IsEmpty(commands,
                               $"Found {commands.Count()} Commands with filled Options and/or Arguments. These should not be filled when building the base tree.");
            }
            public void FindsCommandsInCommandGroups(Type commandGroupType, string[] commandMethodNames)
            {
                var builder = new CommandTreeBuilder(_singleAssemblyProvider);
                var tree    = builder.BuildBaseTree();

                var commandGroup = tree.CommandGroups.First(q => q.CommandGroupType == commandGroupType);

                Assert.Multiple(() =>
                {
                    foreach (var methodName in commandMethodNames)
                    {
                        var methodInfo = commandGroupType.GetMethod(methodName);
                        var found      = commandGroup.Commands.Any(q => q.CommandMethodInfo.MethodHandle == methodInfo.MethodHandle);
                        Assert.True(found, $"Command with MethodName {methodName} has not been found in CommandGroup for Type {commandGroupType.Name}");
                    }
                });
            }