public void FeaturesReturnsInGivenOrder()
        {
            var types = new List <Type> {
                typeof(TestFeatureStub2),
                typeof(TestFeatureStub)
            };

            var fullnodeServiceProvider = new FullNodeServiceProvider(this.serviceProvider.Object, types);
            var result = fullnodeServiceProvider.Features.ToList();

            Assert.Equal(2, result.Count);
            Assert.Equal(typeof(TestFeatureStub2), result[0].GetType());
            Assert.Equal(typeof(TestFeatureStub), result[1].GetType());
        }
        public FullNode Initialize(FullNodeServiceProvider serviceProvider)
        {
            Guard.NotNull(serviceProvider, nameof(serviceProvider));

            this.Services = serviceProvider;

            this.DataFolder          = this.Services.ServiceProvider.GetService <DataFolder>();
            this.DateTimeProvider    = this.Services.ServiceProvider.GetService <DateTimeProvider>();
            this.Network             = this.Services.ServiceProvider.GetService <Network>();
            this._Settings           = this.Services.ServiceProvider.GetService <NodeSettings>();
            this._ChainBehaviorState = this.Services.ServiceProvider.GetService <BlockStore.ChainBehavior.ChainState>();
            this.CoinView            = this.Services.ServiceProvider.GetService <CoinView>();
            this.Chain = this.Services.ServiceProvider.GetService <ConcurrentChain>();
            this.GlobalCancellation = this.Services.ServiceProvider.GetService <CancellationProvider>();
            this.MempoolManager     = this.Services.ServiceProvider.GetService <MempoolManager>();
            this.Signals            = this.Services.ServiceProvider.GetService <Signals>();

            this.ConnectionManager = this.Services.ServiceProvider.GetService <ConnectionManager>();
            this.BlockStoreManager = this.Services.ServiceProvider.GetService <BlockStoreManager>();

            return(this);
        }