Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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)));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
 public static void AddProposalEngine(this ProposalEngine proEng)
 {
     proEng.Add(new Dm5ProposalDescrition());
     proEng.Add(new BilibiliProposalDescription());
 }