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); }
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); }
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); }
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); }