Example #1
0
        public BlockPuller(OnBlockDownloadedCallback callback, IChainState chainState, ProtocolVersion protocolVersion, IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory)
        {
            this.reassignedJobsQueue = new Queue <DownloadJob>();
            this.downloadJobsQueue   = new Queue <DownloadJob>();

            this.assignedDownloadsByHash = new Dictionary <uint256, AssignedDownload>();
            this.assignedDownloadsSorted = new LinkedList <AssignedDownload>();
            this.assignedHeadersByPeerId = new Dictionary <int, List <ChainedHeader> >();

            this.averageBlockSizeBytes = new AverageCalculator(AverageBlockSizeSamplesCount);

            this.pullerBehaviorsByPeerId = new Dictionary <int, IBlockPullerBehavior>();

            this.processQueuesSignal = new AsyncManualResetEvent(false);
            this.queueLock           = new object();
            this.peerLock            = new object();
            this.assignedLock        = new object();
            this.nextJobId           = 0;

            this.networkPeerRequirement = new NetworkPeerRequirement
            {
                MinVersion       = protocolVersion,
                RequiredServices = NetworkPeerServices.Network
            };

            this.cancellationSource = new CancellationTokenSource();
            this.random             = new Random();

            this.maxBlocksBeingDownloaded = MinimalCountOfBlocksBeingDownloaded;

            this.onDownloadedCallback = callback;
            this.chainState           = chainState;
            this.dateTimeProvider     = dateTimeProvider;
            this.logger = loggerFactory.CreateLogger(this.GetType().FullName);
        }
Example #2
0
        public void GivenAStudenHasGradesThenTheCalculatorShouldCalculateAverageCorrectly()
        {
            var student1 = new Student()
            {
                Naam = "Bozo"
            };

            var student2 = new Student()
            {
                Naam = "Victor"
            };

            float expectedAverageStudent1 = (5f + 10f) / 2;
            float expectedAverageStudent2 = (8f + 5f) / 2;

            var gradeCollection = new GradeCollection();

            gradeCollection.AddGrade(CreateGrade(student1, 5f));
            gradeCollection.AddGrade(CreateGrade(student1, 10f));
            gradeCollection.AddGrade(CreateGrade(student2, 8f));
            gradeCollection.AddGrade(CreateGrade(student2, 5f));

            var actualAverageStudent1 = AverageCalculator.CalculateMeanAverage(gradeCollection.GetGradesForStudent(student1));
            var actualAverageStudent2 = AverageCalculator.CalculateMeanAverage(gradeCollection.GetGradesForStudent(student2));

            Assert.AreEqual(expectedAverageStudent1, actualAverageStudent1, 0.001f);
            Assert.AreEqual(expectedAverageStudent2, actualAverageStudent2, 0.002f);
        }
Example #3
0
        public void Test_AverageByMedian()
        {
            calculator = new MedianCalculator();

            double expected = 8.0;

            double actual = calculator.CalculateAverage(values);

            Assert.AreEqual(expected, actual, 0.000001);

            Func <IEnumerable <double>, double> method = delegate
            {
                var sortedValues = values.OrderBy(x => x).ToList();

                int n = sortedValues.Count;

                if (n % 2 == 1)
                {
                    return(sortedValues[(n - 1) / 2]);
                }

                return((sortedValues[(sortedValues.Count / 2) - 1] + sortedValues[n / 2]) / 2);
            };

            Assert.AreEqual(expected, AverageCalculator.CalculateAverage(values, method), 0.000001);

            Assert.AreEqual(expected, AverageCalculator.CalculateAverage(values, calculator), 0.000001);
        }
        public AddressIndexer(StoreSettings storeSettings, DataFolder dataFolder, ILoggerFactory loggerFactory, Network network, INodeStats nodeStats,
                              IConsensusManager consensusManager, IAsyncProvider asyncProvider, ChainIndexer chainIndexer, IDateTimeProvider dateTimeProvider, IUtxoIndexer utxoIndexer)
        {
            this.storeSettings       = storeSettings;
            this.network             = network;
            this.nodeStats           = nodeStats;
            this.dataFolder          = dataFolder;
            this.consensusManager    = consensusManager;
            this.asyncProvider       = asyncProvider;
            this.dateTimeProvider    = dateTimeProvider;
            this.utxoIndexer         = utxoIndexer;
            this.loggerFactory       = loggerFactory;
            this.scriptAddressReader = new ScriptAddressReader();

            this.lockObject           = new object();
            this.flushChangesInterval = TimeSpan.FromMinutes(2);
            this.lastFlushTime        = this.dateTimeProvider.GetUtcNow();
            this.cancellation         = new CancellationTokenSource();
            this.chainIndexer         = chainIndexer;
            this.logger = loggerFactory.CreateLogger(this.GetType().FullName);

            this.averageTimePerBlock = new AverageCalculator(200);
            int maxReorgLength = GetMaxReorgOrFallbackMaxReorg(this.network);

            this.compactionTriggerDistance = maxReorgLength * 2 + SyncBuffer + 1000;
        }
Example #5
0
        public void CalculateTest(double firstValue, double secondValue, double expected)
        {
            var calculator = new AverageCalculator();
            var actual     = calculator.Calculate(firstValue, secondValue);

            Assert.AreEqual(expected, actual, 0.001);
        }
 public void CalculateAverages()
 {
     AveragePricePerLiter           = AverageCalculator.CalculateAveragePricePerLiter(AllEntrysForSelectedCar);
     TotalFuelAmount                = AverageCalculator.CalculateTotalFuelAmount(AllEntrysForSelectedCar);
     TotalRefuelCosts               = AverageCalculator.CalculateTotalRefuelCosts(AllEntrysForSelectedCar);
     TotalDrivenDistance            = AverageCalculator.CalculateTotalDrivenDistance(AllEntrysForSelectedCar);
     AverageConsumption             = AverageCalculator.CalculateTotalAverageConsumption(AllEntrysForSelectedCar);
     AverageCostsOfHundredKilometer = AverageCalculator.CalculateTotalAverageCostsOfHundredKilometer(AllEntrysForSelectedCar);
 }
Example #7
0
        public void CalculateLarge()
        {
            var averageCalculator = new AverageCalculator();
            var suit = new List <double> {
                3, 5, 6, 7, 9, 12, 23, 86, 1, 23, 2, 5, 6, 9, 11, 21, 42, 24, 80, 93
            };

            double expectedValue = 23.4;

            Assert.AreEqual(expectedValue, averageCalculator.Calculate(suit));
        }
        public void CanCalculateAverageAfterCapacityExceeded()
        {
            var calculator = new AverageCalculator(3);

            foreach (int sample in this.samples)
            {
                calculator.AddSample(sample);
            }

            Assert.True(this.DoubleEqual(25, calculator.Average));
        }
Example #9
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //You can use a double array or enter each of the numbers yourself

            //double[] numbers = { 10, 10, 10, 10, 10 };
            //double average = AverageCalculator.GetAverage(numbers);

            double average = AverageCalculator.GetAverage(1, 2, 3);

            Debug.WriteLine(average);
        }
Example #10
0
        public void CanCalculateAverageWhenCapacityIsNotExceeded()
        {
            var calculator = new AverageCalculator(this.samples.Length);

            foreach (int sample in this.samples)
            {
                calculator.AddSample(sample);
            }

            Assert.True(this.DoubleEqual(this.samples.Average(), calculator.Average));
        }
Example #11
0
        public void CalculateSimple()
        {
            var averageCalculator = new AverageCalculator();
            var suit = new List <double> {
                6, 2, 3, 1
            };

            double expectedValue = 3;

            Assert.AreEqual(expectedValue, averageCalculator.Calculate(suit));
        }
Example #12
0
 public void LoadCars()
 {
     AvailableCars = new ObservableCollection <CarModel>(SqLiteDataAccessCarRefuelTrackerModule.LoadCars(SelectedYear));
     foreach (CarModel car in AvailableCars)
     {
         car.CarName = $"{car.Brand.BrandName} {car.ModelType.ModelName}";
         car.AveragePricePerLiter           = AverageCalculator.CalculateAveragePricePerLiter(car.Entries);
         car.TotalFuelAmount                = AverageCalculator.CalculateTotalFuelAmount(car.Entries);
         car.TotalRefuelCosts               = AverageCalculator.CalculateTotalRefuelCosts(car.Entries);
         car.TotalDrivenDistance            = AverageCalculator.CalculateTotalDrivenDistance(car.Entries);
         car.AverageConsumption             = AverageCalculator.CalculateTotalAverageConsumption(car.Entries);
         car.AverageCostsOfHundredKilometer = AverageCalculator.CalculateTotalAverageCostsOfHundredKilometer(car.Entries);
     }
 }
        public async Task <IEnumerable <RecipesListByCategory> > GetAllRecipesByCategoryId(int categoryId)
        {
            try
            {
                _logger.Information("Fetching Recipes By Category {CategoryId}", categoryId);
                var key = CacheKeys.RecipesByCatId + "_" + categoryId;

                if (_memoryCache.TryGetValue(key, out IEnumerable <RecipesListByCategory> data))
                {
                    if (data != null || !data.Any())
                    {
                        return(data);
                    }

                    _memoryCache.Remove(key);
                }

                using var factory = await _dbFactory.Create();

                using var _dbContext = factory.FactoryFor <ApnaBawarchiKhanaDbContext>();
                var result = await _dbContext.Recipes.Include(i => i.RecipeCategories).Include(r => r.RecipeRatings)
                             .Include(i => i.RecipeImages)
                             .ThenInclude(i => i.UploadedImage)
                             .AsNoTracking().OrderByDescending(o => o.CreatedAt).Where(w => w.RecipeCategories.Any(a => a.CategoryId == categoryId))
                             .Select(
                    r => new RecipesListByCategory
                {
                    RecipeId    = r.Id,
                    Description = r.Description,
                    Title       = r.Title,
                    Thumbnail   = r.RecipeImages.Any() ? r.RecipeImages.First().UploadedImage.ImageData : null,
                    Ratings     = AverageCalculator.GetAverageRating(r.RecipeRatings.Select(s => s.Rating).ToList())
                }).ToListAsync();

                if (result == null)
                {
                    return(null);
                }

                _memoryCache.Set(key, result, DateTimeOffset.UtcNow.AddHours(1));

                return(result);
            }
            catch (Exception e)
            {
                _logger.Error(e, "Failed to get recipes by category id {CategoryId} ", categoryId);

                throw;
            }
        }
Example #14
0
        public void Test_AverageByMean()
        {
            calculator = new MeanCalculator();

            double expected = 8.3636363;

            double actual = calculator.CalculateAverage(values);

            Assert.AreEqual(expected, actual, 0.000001);

            Assert.AreEqual(expected, AverageCalculator.CalculateAverage(values, vls => vls.Sum() / vls.Count()), 0.000001);

            Assert.AreEqual(expected, AverageCalculator.CalculateAverage(values, calculator), 0.000001);
        }
Example #15
0
        private static async Task PreencherHistoricoMedias(
            string symbol,
            AverageCalculator mediaCurta,
            AverageCalculator mediaLonga)
        {
            var client = new BinanceOrderClient();

            var klinesResponse = await client.Klines(symbol, "1m", 25);

            foreach (var kline in klinesResponse.Values)
            {
                mediaCurta.AddSample(kline.Close);
                mediaLonga.AddSample(kline.Close);
            }
        }
Example #16
0
        public void OrderAfterResizeIsPreserved()
        {
            var calculator = new AverageCalculator(this.samples.Length + 10);

            foreach (int sample in this.samples)
            {
                calculator.AddSample(sample);
            }

            List <int> lastFive = this.samples.Skip(this.samples.Length - 5).ToList();

            calculator.SetMaxSamples(5);

            Assert.Equal(5, calculator.GetMaxSamples());
            Assert.True(this.DoubleEqual(lastFive.Average(), calculator.Average));
        }
Example #17
0
        public void CanResizeCapacityWithRemovingSamples()
        {
            // Initialize with limit of 200.
            var calculator = new AverageCalculator(200);

            foreach (int sample in this.samples)
            {
                calculator.AddSample(sample);
            }

            // After that only last 5 samples should be used.
            calculator.SetMaxSamples(5);

            Assert.Equal(5, calculator.GetMaxSamples());
            Assert.True(this.DoubleEqual(this.samples.Reverse().Take(5).Average(), calculator.Average));
        }
Example #18
0
        public BlockPullerBehavior(IBlockPuller blockPuller, IInitialBlockDownloadState ibdState, IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory)
        {
            this.ibdState         = ibdState;
            this.dateTimeProvider = dateTimeProvider;
            this.QualityScore     = SamplelessQualityScore;

            this.averageSizeBytes    = new AverageCalculator(IbdSamplesCount);
            this.averageDelaySeconds = new AverageCalculator(IbdSamplesCount);
            this.SpeedBytesPerSecond = 0;
            this.lastDeliveryTime    = null;

            this.blockPuller = blockPuller;

            this.logger        = loggerFactory.CreateLogger(this.GetType().FullName);
            this.loggerFactory = loggerFactory;
        }
        public BlockPullerBehavior(IBlockPuller blockPuller, IInitialBlockDownloadState ibdState, ILoggerFactory loggerFactory)
        {
            this.ibdState     = ibdState;
            this.QualityScore = SamplelessQualityScore;

            int samplesCount = ibdState.IsInitialBlockDownload() ? IbdSamplesCount : NormalSamplesCount;

            this.averageSizeBytes    = new AverageCalculator(samplesCount);
            this.averageDelaySeconds = new AverageCalculator(samplesCount);
            this.SpeedBytesPerSecond = 0;

            this.blockPuller = blockPuller;

            this.logger        = loggerFactory.CreateLogger(this.GetType().FullName, $"[{this.GetHashCode():x}] ");
            this.loggerFactory = loggerFactory;
        }
Example #20
0
        public void CanResizeCapacityWithoutRemovingSamples()
        {
            // Initialize with limit of 200.
            var calculator = new AverageCalculator(200);

            Assert.Equal(200, calculator.GetMaxSamples());

            foreach (int sample in this.samples)
            {
                calculator.AddSample(sample);
            }

            calculator.SetMaxSamples(this.samples.Length);

            Assert.Equal(this.samples.Length, calculator.GetMaxSamples());
            Assert.True(this.DoubleEqual(this.samples.Average(), calculator.Average));
        }
Example #21
0
        /// <summary>
        /// Calculate the level average
        /// </summary>
        /// <param name="levelId"> level id</param>
        private void CalculateLevelAverage(long levelId)
        {
            if (levelId == _levelDto.Id && _levelDto.Modules != null)
            {
                var    average     = 0.0;
                double creditTotal = _levelDto.Modules.Sum(item => item.Credit);

                for (int i = 0; i < _levelDto.Modules.Count; i++)
                {
                    var module = _levelDto.Modules[i];
                    module.ModuleAverage = AverageCalculator.CalculateModuleAverage(module);
                    average += module.ModuleAverage * module.Credit / creditTotal;
                }

                LevelAverage      = Double.Parse(average.ToString("n2"));
                _levelDto.Average = Double.Parse(average.ToString("n2"));
                _eventAggregator.GetEvent <SummaryCalculateEvent>().Publish();
            }
        }
Example #22
0
        public AddressIndexer(StoreSettings storeSettings, DataFolder dataFolder, ILoggerFactory loggerFactory, Network network, INodeStats nodeStats, IConsensusManager consensusManager, IAsyncProvider asyncProvider)
        {
            this.storeSettings       = storeSettings;
            this.network             = network;
            this.nodeStats           = nodeStats;
            this.dataFolder          = dataFolder;
            this.consensusManager    = consensusManager;
            this.asyncProvider       = asyncProvider;
            this.loggerFactory       = loggerFactory;
            this.scriptAddressReader = new ScriptAddressReader();

            this.lockObject           = new object();
            this.flushChangesInterval = TimeSpan.FromMinutes(10);
            this.lastFlushTime        = DateTime.Now;
            this.cancellation         = new CancellationTokenSource();
            this.logger = loggerFactory.CreateLogger(this.GetType().FullName);

            this.averageTimePerBlock = new AverageCalculator(200);
        }
        public string GetSummary(User user, Subject subject)
        {
            if (subject == null)
            {
                return(null);
            }
            var grades = database.Grades
                         .Include(g => g.Student)
                         .Where(g => g.Student.Id == user.Id && g.Subject.Id == subject.Id)
                         .AsEnumerable()
                         .GroupBy(g => g.Semester);
            string result = "";

            foreach (var semester in grades)
            {
                result += $"Semester {semester.Key}: " +
                          $"{string.Join(", ", semester.Select(s => s.Value))}, " +
                          $"Average: {AverageCalculator.GetAverageForSubject(subject, semester.Key, semester.ToList()):F2}; "; // TODO localize
            }
            return(result.Trim(' ', ';'));
        }
        public void GivenACorrectCollectionIsProvidedThenTheCalculatorReturnsACorrectAverage()
        {
            var input = new List <ValueProviderMock>
            {
                new ValueProviderMock()
                {
                    Value = 10
                },
                new ValueProviderMock()
                {
                    Value = 6
                },
                new ValueProviderMock()
                {
                    Value = 7
                }
            };
            var   expected = (10f + 6f + 7f) / 3;
            float result   = AverageCalculator.CalculateMeanAverage(input);

            Assert.AreEqual(expected, result, 0.001f);
        }
        public bool TryToBeatPawn(PawnAdapter origin, PawnAdapter destination, List <PawnAdapter> bluePawns, List <PawnAdapter> redPawns)
        {
            int movedRows    = MoveCalculator.CalculateMovedRows(origin, destination);
            int movedColumns = MoveCalculator.CalculateMovedColumns(origin, destination);

            if (RuleConfig.moveTwoRows == movedRows && RuleConfig.moveTwoColumns == Math.Abs(movedColumns))
            {
                AverageCalculator averageCalculator = new AverageCalculator();
                int skippedColumn = averageCalculator.CalculateAverage(destination.Column(), origin.Column());
                int skippedRow    = averageCalculator.CalculateAverage(destination.Row(), origin.Row());
                List <PawnAdapter> oppositeSide = origin.Player() == PlayerEnum.Red ? bluePawns : redPawns;
                foreach (PawnAdapter oppositePawnAdapter in oppositeSide)
                {
                    if (oppositePawnAdapter.Row() == skippedRow && oppositePawnAdapter.Column() == skippedColumn)
                    {
                        oppositePawnAdapter.Hide();
                        return(true);
                    }
                }
            }
            return(false);
        }
Example #26
0
        public void ResizeToSmallerSamplesCountKeepsTheRightSamples()
        {
            // Initialize with limit of 200.
            var calculator = new AverageCalculator(200);

            Assert.Equal(200, calculator.GetMaxSamples());

            // Add 10,20,30
            for (int i = 0; i < 3; i++)
            {
                calculator.AddSample(this.samples[i]);
            }

            // After that only 20,30 should be there
            calculator.SetMaxSamples(2);

            calculator.AddSample(40);

            // There are 2 samples: 30 and 40

            Assert.Equal(2, calculator.GetMaxSamples());
            Assert.True(this.DoubleEqual(35, calculator.Average));
        }
        public BlockPuller(IChainState chainState, NodeSettings nodeSettings, IDateTimeProvider dateTimeProvider, INodeStats nodeStats, ILoggerFactory loggerFactory)
        {
            this.reassignedJobsQueue = new Queue <DownloadJob>();
            this.downloadJobsQueue   = new Queue <DownloadJob>();

            this.assignedDownloadsByHash = new Dictionary <uint256, AssignedDownload>();
            this.assignedDownloadsSorted = new LinkedList <AssignedDownload>();
            this.assignedHeadersByPeerId = new Dictionary <int, List <ChainedHeader> >();

            this.averageBlockSizeBytes = new AverageCalculator(AverageBlockSizeSamplesCount);

            this.pullerBehaviorsByPeerId = new Dictionary <int, IBlockPullerBehavior>();

            this.processQueuesSignal = new AsyncManualResetEvent(false);
            this.queueLock           = new object();
            this.peerLock            = new object();
            this.assignedLock        = new object();
            this.nextJobId           = 0;

            this.networkPeerRequirement = new NetworkPeerRequirement
            {
                MinVersion       = nodeSettings.MinProtocolVersion ?? nodeSettings.ProtocolVersion,
                RequiredServices = NetworkPeerServices.Network
            };

            this.cancellationSource = new CancellationTokenSource();
            this.random             = new Random();

            this.maxBlocksBeingDownloaded = MinimalCountOfBlocksBeingDownloaded;

            this.chainState       = chainState;
            this.dateTimeProvider = dateTimeProvider;
            this.logger           = loggerFactory.CreateLogger("Impleum.Bitcoin.Fullnode");

            nodeStats.RegisterStats(this.AddComponentStats, StatsType.Component);
        }
Example #28
0
 public JumpMoveValidator()
 {
     AverageCalculator = new AverageCalculator();
     MoveCalculator    = new MoveCalculator();
 }
Example #29
0
 public void Setup()
 {
     _numbers           = new [] { 34, 21 };
     _averageCalculator = new AverageCalculator(_numbers);
 }
 public StockAverageController(AverageCalculator averageCalculator)
 {
     _averageCalculator = averageCalculator;
 }