public void TestParseWhere2() { var result = DependencyBuilder.TryParsingDependentFields("location_id=#location"); Assert.AreEqual(1, result.Count); Assert.IsTrue(result.Contains("location")); }
public App() { var host = Host .CreateDefaultBuilder() .ConfigureServices(services => { services.UseMicrosoftDependencyResolver(); var resolver = Locator.CurrentMutable; resolver.InitializeSplat(); resolver.InitializeReactiveUI(); DependencyBuilder.GetServices(services); }) .ConfigureLogging(loggingBuilder => { loggingBuilder.AddSplat(); }) .UseEnvironment(Environments.Development) .Build(); AssemblyHelper .GetSolutionAssemblies() .ToList() .ForEach(Locator.CurrentMutable.RegisterViewsForViewModels); // https://stackoverflow.com/questions/431940/how-to-set-default-wpf-window-style-in-app-xaml FrameworkElement.StyleProperty.OverrideMetadata(typeof(Window), new FrameworkPropertyMetadata { DefaultValue = Application.Current.FindResource(typeof(Window)) }); }
public void Disabling_Collection_Observation_Should_Suppress_Event() { //clear existing dependency and let the garbage collector take care of it //(works thanks to weak event listeners). If we didn't change listener remained active dependency = null; GC.Collect(); GC.WaitForPendingFinalizers(); //create settings and disable observations DependencyNodeSettings <ObservableCollection <Student> > settings; settings = new DependencyNodeSettings <ObservableCollection <Student> >(() => course.Students); settings.ChangeHandler = OnDependencyChanged; settings.ObserveSubValueChanges = false; dependency = DependencyBuilder.CreateDependency(settings); //add student to collection course.Students.Add(TestUtil.CreateTestStudent()); Assert.AreEqual(0, eventCounter); //remove student from collection course.Students.Remove(course.Students[7]); Assert.AreEqual(0, eventCounter); }
private static void RegisterServiceDependencies(DependencyBuilder builder) { builder.Register<IAuthorizationManager, ServiceAuthorizationManager>(InstanceLifetime.Singleton) .Register<IStreamCompressor, RestStreamCompressor>(InstanceLifetime.Singleton) .ScanAssemblies(new[] { "RestTestContracts", "RestTestServices" }, t => t.Name.EndsWith("Service")) .AllowPropertyInjection(t => t.GetProperty("Context") != null || t.GetProperty("Request") != null); }
private static void Setup(string[] args) { // Build dependency container DependencyBuilder.Build().BeginLifetimeScope(); DependencyBuilder.Container.Resolve <ISettingsBuilder>().BuildSettings(args); Logger = DependencyBuilder.Container.Resolve <ILogger>(); Logger.Log("Built dependencies", LogEventLevel.Information); }
public void Get_Disposed() { var dependencyService = new DependencyBuilder().Build(); dependencyService.Dispose(); Assert.Throws <ObjectDisposedException>(() => dependencyService.Get <IFirst>()); }
public void TestParseWhere() { var result = DependencyBuilder.TryParsingDependentFields("field1=#field1 and field2=#field2"); Assert.AreEqual(2, result.Count); Assert.IsTrue(result.Contains("field1")); Assert.IsTrue(result.Contains("field2")); }
public void Get_ByType_Disposed() { var dependencyService = new DependencyBuilder().Build().CreateScope(); dependencyService.Dispose(); Assert.Throws <ObjectDisposedException>(() => dependencyService.Get(typeof(IFirst))); }
/// <summary> /// Runs just after the page has completed initializing injecting /// any dependencies the page's controls may have. /// </summary> private void PageInitComplete(object sender, EventArgs e) { Page page = (Page)sender; foreach (Control pageControl in GetControlTree(page)) { DependencyBuilder.BuildUp(pageControl); } }
public void Get_Fail_SingletonRequiresNotRegistered() { var dependencyService = new DependencyBuilder() .AddSingleton <IFirst, First.RequiresSecond>() .Build(); Assert.Throws <InvalidOperationException>(() => dependencyService.Get <IFirst>()); }
public void Get_Fail_ScopedRequiresFirst() { var dependencyService = new DependencyBuilder() .AddScoped <IFirst, First.RequiresFirst>() .Build().CreateScope(); Assert.Throws <InvalidOperationException>(() => dependencyService.Get <IFirst>()); }
private E <string> Run(ParameterData setup) { var configResult = ConfRoot.OpenOrCreate(configFilePath); if (!configResult.Ok) { return("Could not create config"); } ConfRoot config = configResult.Value; Config.Deprecated.UpgradeScript.CheckAndUpgrade(config); ConfigUpgrade2.Upgrade(config.Configs.BotsPath.Value); config.Save(); var builder = new DependencyBuilder(injector); builder.AddModule(this); builder.AddModule(config); builder.AddModule(injector); builder.AddModule(config.Db); builder.RequestModule <SystemMonitor>(); builder.RequestModule <DbStore>(); builder.AddModule(config.Plugins); builder.RequestModule <PluginManager>(); builder.AddModule(config.Web); builder.AddModule(config.Web.Interface); builder.AddModule(config.Web.Api); builder.RequestModule <WebServer>(); builder.AddModule(config.Rights); builder.RequestModule <RightsManager>(); builder.RequestModule <BotManager>(); builder.RequestModule <TokenManager>(); builder.RequestModule <CommandManager>(); builder.AddModule(config.Factories); builder.RequestModule <SpotifyApi>(); builder.RequestModule <ResourceResolver>(); builder.RequestModule <Stats>(); builder.AddModule(config.Tools.Librespot); if (!builder.Build()) { Log.Error("Missing core module dependency"); return("Could not load all core modules"); } YoutubeDlHelper.DataObj = config.Tools.YoutubeDl; builder.GetModule <SystemMonitor>().StartTimedSnapshots(); builder.GetModule <CommandManager>().RegisterCollection(MainCommands.Bag); builder.GetModule <RightsManager>().CreateConfigIfNotExists(setup.Interactive); builder.GetModule <BotManager>().RunBots(setup.Interactive); builder.GetModule <WebServer>().StartWebServer(); builder.GetModule <Stats>().StartTimer(setup.SendStats); return(R.Ok); }
public void Get_Fail_TransientRequiresScoped() { var dependencyService = new DependencyBuilder() .AddTransient <IFirst, First.RequiresSecond>() .AddScoped <ISecond, Second.RequiresNone>() .Build(); Assert.Throws <InvalidOperationException>(() => dependencyService.Get <IFirst>()); }
public async Task Run(ParameterData setup) { scheduler.VerifyOwnThread(); AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; TaskScheduler.UnobservedTaskException += UnobservedTaskExceptionHandler; Console.CancelKeyPress += ConsoleInterruptHandler; var config = ConfRoot.OpenOrCreate(configFilePath); if (config is null) { throw new Exception("Could not create config"); } ConfigUpgrade2.Upgrade(config.Configs.BotsPath.Value); config.Save(); var builder = new DependencyBuilder(injector); injector.AddModule(this); injector.AddModule(scheduler); injector.AddModule(injector); injector.AddModule(config); injector.AddModule(config.Db); injector.AddModule(config.Plugins); injector.AddModule(config.Web); injector.AddModule(config.Web.Interface); injector.AddModule(config.Web.Api); injector.AddModule(config.Rights); injector.AddModule(config.Factories); builder.RequestModule <SystemMonitor>(); builder.RequestModule <DbStore>(); builder.RequestModule <PluginManager>(); builder.RequestModule <WebServer>(); builder.RequestModule <RightsManager>(); builder.RequestModule <BotManager>(); builder.RequestModule <TokenManager>(); builder.RequestModule <CommandManager>(); builder.RequestModule <ResourceResolver>(); builder.RequestModule <Stats>(); if (!builder.Build()) { throw new Exception("Could not load all core modules"); } Upgrader.PerformUpgrades(injector); YoutubeDlHelper.DataObj = config.Tools.YoutubeDl; injector.GetModuleOrThrow <CommandManager>().RegisterCollection(MainCommands.Bag); injector.GetModuleOrThrow <RightsManager>().CreateConfigIfNotExists(setup.Interactive); injector.GetModuleOrThrow <WebServer>().StartWebServer(); injector.GetModuleOrThrow <Stats>().StartTimer(setup.SendStats); await injector.GetModuleOrThrow <BotManager>().RunBots(setup.Interactive); }
private E <string> Run(bool interactive = false) { var configResult = ConfRoot.OpenOrCreate(configFilePath); if (!configResult.Ok) { return("Could not create config"); } ConfRoot config = configResult.Value; Config.Deprecated.UpgradeScript.CheckAndUpgrade(config); ConfigUpgrade2.Upgrade(config.Configs.BotsPath.Value); config.Save(); var builder = new DependencyBuilder(injector); builder.AddModule(this); builder.AddModule(config); builder.AddModule(injector); builder.AddModule(config.Db); builder.RequestModule <SystemMonitor>(); builder.RequestModule <DbStore>(); builder.AddModule(config.Plugins); builder.RequestModule <PluginManager>(); builder.AddModule(config.Web); builder.AddModule(config.Web.Interface); builder.AddModule(config.Web.Api); builder.RequestModule <WebServer>(); builder.AddModule(config.Rights); builder.RequestModule <RightsManager>(); builder.RequestModule <BotManager>(); builder.RequestModule <TokenManager>(); builder.RequestModule <CommandManager>(); builder.AddModule(config.Factories); // TODO fix interaction: rfm needs to be in the same injector as the commandsystem, otherwise duplicate error // Also TODO find solution to move commandsystem to bot, without breaking api builder.RequestModule <ResourceFactory>(); if (!builder.Build()) { Log.Error("Missing core module dependency"); return("Could not load all core modules"); } YoutubeDlHelper.DataObj = config.Tools.YoutubeDl; builder.GetModule <SystemMonitor>().StartTimedSnapshots(); builder.GetModule <CommandManager>().RegisterCollection(MainCommands.Bag); builder.GetModule <RightsManager>().CreateConfigIfNotExists(interactive); builder.GetModule <BotManager>().RunBots(interactive); builder.GetModule <WebServer>().StartWebServer(); return(R.Ok); }
public void Create_AutoDetect() { var dependencyService = new DependencyBuilder().EnableServiceAutoDetection(GetType().Assembly).Build().CreateScope(); var service = dependencyService.Create <First.RequiresUniqueSecond>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresUniqueSecond>(service); Assert.NotNull(first.UniqueSecond); Assert.IsType <Second.RequiresNone>(first.UniqueSecond); }
public void Get_Success_ScopedIgnoresSecond() { var dependencyService = new DependencyBuilder() .AddScoped <IFirst, First.IgnoreSecond>() .Build().CreateScope(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); Assert.IsType <First.IgnoreSecond>(service); }
public void Get_Success_ScopedAutoDetected() { var dependencyService = new DependencyBuilder() .EnableServiceAutoDetection(GetType().Assembly) .Build().CreateScope(); var service = dependencyService.Get <IUniqueFirst>(); Assert.NotNull(service); Assert.IsType <First.RequiresNone>(service); }
public void Observing_Nullable_Types_Should_Work() { var basket = new { Course = c }; DependencyBuilder.CreateDependency(() => basket.Course.IsFull, OnCourseChanged); c.IsFull = true; c.IsFull = null; c.IsFull = false; c.IsFull = true; Assert.AreEqual(4, changeCounter); }
public void Create_Standard() { var dependencyService = new DependencyBuilder() .AddScoped <ISecond, Second.RequiresNone>() .Build().CreateScope(); var service = dependencyService.Create <First.RequiresSecond>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresSecond>(service); Assert.NotNull(first.Second); Assert.IsType <Second.RequiresNone>(first.Second); }
public DataExporter(string serverName, string databaseName, string configServerName, string configDatabaseName) { ServerName = serverName; DatabaseName = databaseName; PrimaryKeyConstraints = DataReader.GetPrimaryKeyConstraintsFromDatabase(ServerName, DatabaseName); ForeignKeyConstraints = DataReader.GetForeignKeyConstraintsFromDatabase(ServerName, DatabaseName); SoftConstraints = DataReader.GetSoftConstraintsFromDatabase(configServerName, configDatabaseName); IgnoredDependencyLists = DataReader.GetIgnoredDependenciesFromDatabase(configServerName, configDatabaseName); List <ForeignKeyConstraint> allDependencies = new List <ForeignKeyConstraint>(ForeignKeyConstraints); allDependencies.AddRange(SoftConstraints); DependencyBuilder dependencyBuilder = new DependencyBuilder(); DependencyGraph = dependencyBuilder.BuildDependency(allDependencies); }
public void Sub_Property_Tracking_Can_Be_Disabled_Through_Settings() { //create settings class var settings = new DependencyNodeSettings <IAddress>(() => Student.School.Address); //configure settings to ignore sub item changes settings.ObserveSubValueChanges = false; //dispose old dependency in order to get rid of event listener! addressDependency.Dispose(); addressDependency = DependencyBuilder.CreateDependency(settings); //does not cause a change event: Student.School.Address.City = "Ethon"; Assert.AreEqual(0, changeCounter); }
protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); var container = DependencyBuilder.Build(); GlobalConfiguration.Configuration.Formatters.Clear(); var jsonFormatter = new JsonMediaTypeFormatter(); jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); GlobalConfiguration.Configuration.Formatters.Add(jsonFormatter); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container); }
public void Get_Success_SingletonRequiresSingletonAutoDetected() { var dependencyService = new DependencyBuilder() .EnableServiceAutoDetection(GetType().Assembly) .AddSingleton <IFirst, First.RequiresUniqueSecond>() .Build(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresUniqueSecond>(service); Assert.NotNull(first.UniqueSecond); Assert.IsType <Second.RequiresNone>(first.UniqueSecond); }
public void Get_Success_SingletonRequiresTransientFunction() { var dependencyService = new DependencyBuilder() .AddSingleton <IFirst, First.RequiresSecond>() .AddTransient <ISecond>(x => new Second.RequiresNone()) .Build(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresSecond>(service); Assert.NotNull(first.Second); Assert.IsType <Second.RequiresNone>(first.Second); }
public void Get_Success_SingletonRequiresSingletonInstance() { var dependencyService = new DependencyBuilder() .AddSingleton <IFirst, First.RequiresSecond>() .AddSingleton <ISecond>(new Second.RequiresNone()) .Build(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); var second = Assert.IsType <First.RequiresSecond>(service); Assert.NotNull(second.Second); Assert.IsType <Second.RequiresNone>(second.Second); }
public void Get_Success_ScopedRequiresSingleton() { var dependencyService = new DependencyBuilder() .AddScoped <IFirst, First.RequiresSecond>() .AddSingleton <ISecond, Second.RequiresNone>() .Build().CreateScope(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresSecond>(service); Assert.NotNull(first.Second); Assert.IsType <Second.RequiresNone>(first.Second); }
public void Dispose_Success_DisposableSingleton() { var dependencyService = new DependencyBuilder() .EnableServiceAutoDetection(GetType().Assembly) .AddSingleton <IFirst, First.RequiresNone>() .Build(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresNone>(service); dependencyService.Dispose(); Assert.True(first.IsDisposed); }
/// <summary> /// Runs just before page processing, injecting any dependencies the /// page may have. /// </summary> private void PreRequestHandlerExecute(object sender, EventArgs e) { IHttpHandler handler = HttpContext.Current.Handler; if (!PageUsesInjection(handler)) { return; } Page page = handler as Page; if (page != null) { page.InitComplete += PageInitComplete; } DependencyBuilder.BuildUp(handler); }
public void Dispose_Success_DisposableScoped_SuppressesExceptions() { var dependencyService = new DependencyBuilder() .EnableServiceAutoDetection(GetType().Assembly) .AddScoped <IFirst, First.RequiresNone>() .Build().CreateScope(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresNone>(service); first.Dispose(); dependencyService.Dispose(); }
public void Get_Success_TransientRequiresScoped() { var dependencyService = new DependencyBuilder() .EnableServiceAutoDetection(GetType().Assembly) .AddTransient <IFirst, First.RequiresSecond>() .AddScoped <ISecond, Second.RequiresNone>() .Build().CreateScope(); var service = dependencyService.Get <IFirst>(); Assert.NotNull(service); var first = Assert.IsType <First.RequiresSecond>(service); Assert.NotNull(first.Second); Assert.IsType <Second.RequiresNone>(first.Second); }
private RestOptions InitializeWithBuilder(Action<DependencyBuilder> builder, bool mockContext) { if (builder == null) { throw new ArgumentNullException("builder"); } var container = new TinyIoCContainer(); var dependencyBuilder = new DependencyBuilder(container); builder(dependencyBuilder); RegisterDependencies(container, mockContext, dependencyBuilder.IsRegistered); return Initialize(new DefaultServiceLocator(container, dependencyBuilder.PropertyInjectionPredicate)); }
private static void RegisterServiceDependencies(DependencyBuilder builder) { builder.Register<IUrlRewriter, LegacyUrlRewriter>(InstanceLifetime.Singleton) .ScanAssemblies(typeof(Global).Assembly); }