public void GivenAnyCondition_ActiveByIndex_MustBeActived() { var prov = new NullIProposalProvider(); var f = new ValueServiceScopeFactory { Factory = new Dictionary <Type, Func <object> > { [typeof(NullIProposalProvider)] = () => prov } }; var eng = new ProposalEngine(f); eng.Add(new NullProposalDescription { DescritionUri = new Uri("http://localhost:4200"), Name = "any", ProviderType = typeof(NullIProposalProvider) }); Assert.AreEqual(1, eng.Count); var obj = eng.Active(0); Assert.IsNotNull(obj.Provider); Assert.AreEqual(prov, obj.Provider); obj.Dispose(); }
public static void AddServices(IServiceCollection services, IConfiguration config) { services.AddKnowEngines(); services.AddSingleton(x => { var eng = new ComicEngine(); eng.AddComicSource(); return(eng); }); services.AddSingleton(x => { var factory = x.GetRequiredService <IServiceScopeFactory>(); var eng = new SearchEngine(factory); eng.AddSearchProvider(); return(eng); }); services.AddSingleton(x => { var factory = x.GetRequiredService <IServiceScopeFactory>(); var eng = new ProposalEngine(factory); eng.AddProposalEngine(); return(eng); }); var mgr = new RecyclableMemoryStreamManager(); services.AddSingleton(mgr); services.AddHttpClient(); services.AddScoped <INetworkAdapter, HttpClientAdapter>(); services.AddScoped <IJsEngine, JintJsEngine>(); services.AddScoped <IDistributedCache, RedisCache>(); services.AddOptions <RedisCacheOptions>() .Configure(x => x.Configuration = config["ConnectionStrings:CacheConnection"]); services.AddDbContext <AnfDbContext>((x, y) => { var config = x.GetRequiredService <IConfiguration>(); y.UseSqlServer(config["ConnectionStrings:anfdb"]); }).AddIdentityCore <AnfUser>(x => { x.Password.RequireDigit = false; x.Password.RequiredUniqueChars = 0; x.Password.RequireLowercase = false; x.Password.RequireNonAlphanumeric = false; x.Password.RequireUppercase = false; }) .AddEntityFrameworkStores <AnfDbContext>(); services.AddOptions <FetchOptions>(); services.AddOptions <ResourceLockOptions>(); services.AddFetcherProvider() .AddRedisFetcherProvider() .AddMssqlResourceFetcher() .AddDefaultFetcherProvider(); services.AddResourceFetcher() .AddMssqlResourceFetcher() .AddRedisFetcherProvider(); services.AddScoped <IDbContextTransfer, AnfDbContextTransfer>(); services.AddRedis(); }
public void ActiveNoImplement_IProposalProvider_Type_MustThrowException() { var prov = new object(); var f = new ValueServiceScopeFactory { Factory = new Dictionary <Type, Func <object> > { [typeof(object)] = () => prov } }; var eng = new ProposalEngine(f); Assert.ThrowsException <InvalidCastException>(() => eng.Active(typeof(object))); }
protected Task UpdateIfNeedAsync() { switch (StartupSettings.StartupType) { case StartupTypes.Proposal: ProposalSnapshots.Clear(); if (SelectedProposal is null) { SelectedProposal = ProposalEngine.FirstOrDefault(); } return(UpdateProposalAsync(StartupSettings.DisplayProposalCount)); case StartupTypes.Providers: return(LoadEngineIcons()); default: break; } return(Task.CompletedTask); }
public void ActiveType_TypeMustActived() { var prov = new NullIProposalProvider(); var f = new ValueServiceScopeFactory { Factory = new Dictionary <Type, Func <object> > { [typeof(NullIProposalProvider)] = () => prov } }; var eng = new ProposalEngine(f); Assert.AreEqual(f, eng.ServiceScopeFactory); var obj = eng.Active(typeof(NullIProposalProvider)); Assert.IsNotNull(obj.Provider); Assert.IsNotNull(obj.Scope); Assert.AreEqual(prov, obj.Provider); obj.Dispose(); }
public void GivenAnyCondition_ActiveOutOfRang_MustThrowException(int count, int index) { var prov = new NullIProposalProvider(); var f = new ValueServiceScopeFactory { Factory = new Dictionary <Type, Func <object> > { [typeof(NullIProposalProvider)] = () => prov } }; var eng = new ProposalEngine(f); for (int i = 0; i < count; i++) { eng.Add(new NullProposalDescription { DescritionUri = new Uri("http://localhost:420" + i), Name = "any" + i, ProviderType = typeof(NullIProposalProvider) }); } Assert.ThrowsException <ArgumentOutOfRangeException>(() => eng.Active(index)); }
public static void AddProposalEngine(this ProposalEngine proEng) { proEng.Add(new Dm5ProposalDescrition()); proEng.Add(new BilibiliProposalDescription()); }