Beispiel #1
0
        private PostStatisticsDTO[] GetFullDataPostStatisticsDTOs()
        {
            PostStatisticsDTO postStatisticsDTO1 = new PostStatisticsDTO();

            postStatisticsDTO1.PostId      = LOW_PROBABILITY_POST_ID;
            postStatisticsDTO1.Views       = 1000;
            postStatisticsDTO1.Conversions = 170;
            postStatisticsDTO1.ReadTime    = 2500;

            PostStatisticsDTO postStatisticsDTO2 = new PostStatisticsDTO();

            postStatisticsDTO2.PostId      = HIGH_PROBABILITY_POST_ID;
            postStatisticsDTO2.Views       = 2500;
            postStatisticsDTO2.Conversions = 325;
            postStatisticsDTO2.ReadTime    = 3250;


            PostStatisticsDTO[] postsStatistics = { postStatisticsDTO1, postStatisticsDTO2 };

            return(postsStatistics);
        }
Beispiel #2
0
        private PostStatisticsDTO[] GetCustomDataPostStatisticsDTOs(int views = 0, int conversions = 0, double readTime = 0)
        {
            PostStatisticsDTO postStatisticsDTO1 = new PostStatisticsDTO();

            postStatisticsDTO1.PostId      = CUSTOM_POST_ID_1;
            postStatisticsDTO1.Views       = views * 50;
            postStatisticsDTO1.Conversions = conversions * 99;
            postStatisticsDTO1.ReadTime    = readTime * 30;

            PostStatisticsDTO postStatisticsDTO2 = new PostStatisticsDTO();

            postStatisticsDTO2.PostId      = CUSTOM_POST_ID_2;
            postStatisticsDTO2.Views       = views * 15;
            postStatisticsDTO2.Conversions = conversions * 10;
            postStatisticsDTO2.ReadTime    = readTime * 100;


            PostStatisticsDTO[] postsStatistics = { postStatisticsDTO1, postStatisticsDTO2 };

            return(postsStatistics);
        }
Beispiel #3
0
        public void TestOnePopularPostStatistics()
        {
            string postId = "single";
            Random random = new Random();

            PostStatisticsDTO postStatisticsDTO = new PostStatisticsDTO();

            postStatisticsDTO.PostId      = postId;
            postStatisticsDTO.Views       = random.Next(1, 100000);
            postStatisticsDTO.Conversions = random.Next(1, 100000);
            postStatisticsDTO.ReadTime    = (double)random.Next(1, 100000);

            PostStatisticsDTO[] postsStatistics = { postStatisticsDTO };

            PopularPostsDTO popularPostsDTO = new PopularPostsDTO();

            popularPostsDTO.PostsStatistics = postsStatistics;

            IDictionary <string, double> result = calculatePopularPostsService.CalculatePopularPosts(popularPostsDTO, 1);

            Assert.Equal(0.7333333333333334, result.First().Value);
            Assert.Equal(postId, result.First().Key);
        }
Beispiel #4
0
        private double CalculatePostProbability(
            int allViews,
            int allConversions,
            double allReadTime,
            PostStatisticsDTO postStatisticsDTO
            )
        {
            if (allViews <= 0 || allReadTime <= 0)
            {
                return(0);
            }

            double sumProbability = 0;

            sumProbability += CalculateViewsProbability(postStatisticsDTO.Views, allViews);
            sumProbability += CalculateReadTimeProbability(postStatisticsDTO.ReadTime, allReadTime);

            if (allConversions > 0)
            {
                sumProbability += CalculateConversionProbability(postStatisticsDTO.Conversions, allConversions);
            }

            return(sumProbability / COUNT_CALCULATE_PROBABILITY);
        }