public void RegisterGroupModuleWithModules()
        {
            var securityRegister = new SecurityModuleRegistrator();

            securityRegister.Register(register =>
            {
                register.ForGroup("Scheduling")
                .IncludeModule("DeliverySchedule", o => o.WithBasicFunction(reg => reg.Register(BasicFunction.Create).Register(BasicFunction.View))
                               .WithSpecialFunction(reg => reg.Register("GenerateSchedule")))
                .IncludeModule("TruckSchedule", o => o.WithBasicFunction(Function.All)
                               .WithSpecialFunction(specialFunc => specialFunc.Register("Generate")))
                .IncludeModule("DriverInformation", o => o.WithBasicFunction(Function.ViewOnly)
                               .WithSpecialFunction(reg => reg.Register("OverrideSomethig"))
                               .WithBasicFunction(Function.All));

                register.ForGroup("Forecasting")
                .IncludeModule("Forecasting", functions => functions.WithBasicFunction().WithSpecialFunction(reg => reg.Register("Forecast")));

                register.ForGroup("Administration")
                .IncludeSubgroup("Reference", modules => modules.IncludeModule("User", reg => reg.WithBasicFunction(Function.All)))
                .IncludeModule("UserGroup", reg => reg.WithBasicFunction(Function.All));
            });

            Assert.IsTrue(securityRegister.Container.Count == 6);
            securityRegister.Container.ForEach(o => Assert.IsTrue(o.Functions.Count > 0));
        }
        private RegisterModuleFunctionContainer()
        {
            var registrators     = GetRegistrators();
            var securityRegister = new SecurityModuleRegistrator();

            registrators.ForEach(o => o.Register(securityRegister));
            Container = securityRegister.Container;
        }