Ejemplo n.º 1
0
        public async Task UpdateStatisticsAsync()
        {
            try
            {
                await Task.Run(() =>
                {
                    Total = Tweets.Count;

                    if (Total > 0)
                    {
                        AvgTweetRates              = TweetsFilter.GetAverageTweetRates(UpdatesStartedAt, Total);
                        PercentTweetsWithEmoji     = TweetsFilter.GetPercentTweetsWithEmoji(TweetsWithEmoji, Total);
                        PercentTweetsWithPhotoUrls = TweetsFilter.GetPercentTweetsWithPhotoUrls(TweetsWithPhotoUrls, Total);
                        PercentTweetsWithUrls      = TweetsFilter.GetPercentTweetsWithUrls(TweetsWithUrls, Total);
                        TopDomains  = TweetsFilter.GetTopDomains(AllUrls);
                        TopEmoji    = TweetsFilter.GetTopEmoji(AllEmoji);
                        TopHashtags = TweetsFilter.GetTopHashtags(AllHashtags);
                    }
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("[TWEET STATISTICS SERVICE][EXCPETION][UpdateStatisticsAsync]");
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
        }
Ejemplo n.º 2
0
        public void GetPercentTweetsWithUrls_ReturnsOneHundred_WhenAllTweetsHaveUrls()
        {
            var tweets = new List <Tweet> {
                new Tweet {
                    Data = new TweetData {
                        Entities = new TweetEntities {
                            Urls = new Url[] {
                                new Url {
                                    DisplayUrl = "pic.twitter.com/QNCBu0LkFx"
                                },
                                new Url {
                                    DisplayUrl = "not.twitter.com/ABC"
                                }
                            }
                        }
                    }
                },
                new Tweet {
                    Data = new TweetData {
                        Entities = new TweetEntities {
                            Urls = new Url[] {
                                new Url {
                                    DisplayUrl = "pic.twitter.com/QNCBu0LkFx"
                                },
                                new Url {
                                    DisplayUrl = "not.twitter.com/ABC"
                                }
                            }
                        }
                    }
                },
            };

            Assert.AreEqual(100, TweetsFilter.GetPercentTweetsWithUrls(tweets, tweets.Count));
        }
Ejemplo n.º 3
0
        public void GetTopEmoji_ReturnsTopThreeEmoji()
        {
            var birthdayCake     = Emoji.BirthdayCake.ToString();
            var clappingHands    = Emoji.ClappingHands.ToString();
            var americanFootball = Emoji.AmericanFootball.ToString();
            var boxingGlove      = Emoji.BoxingGlove.ToString();

            var emojiList = new List <string> {
                clappingHands,
                clappingHands,
                birthdayCake,
                clappingHands,
                americanFootball,
                birthdayCake,
                clappingHands,
                birthdayCake,
                americanFootball,
                boxingGlove
            };

            var topEmoji = TweetsFilter.GetTopEmoji(emojiList);

            Assert.AreEqual(3, topEmoji.Count());
            Assert.AreEqual(clappingHands, topEmoji[0]);
            Assert.AreEqual(birthdayCake, topEmoji[1]);
            Assert.AreEqual(americanFootball, topEmoji[2]);
        }
Ejemplo n.º 4
0
        public void FindEmoji_WhenATweetsHaveConsecutiveInstancesOfTheSameEmojNotSeparatedBySpaces()
        {
            var tweet = new Tweet
            {
                Data = new TweetData
                {
                    Text = "@estarcevic_ Congrats! 👏👏👏"
                }
            };

            Assert.AreEqual(1, TweetsFilter.FindEmoji(tweet).Count);
        }
Ejemplo n.º 5
0
        public void FindEmoji_WhenATweetHasSingleEmoj()
        {
            var tweet = new Tweet
            {
                Data = new TweetData
                {
                    Text = "Happy Birthday, Melissa!🎂"
                }
            };

            Assert.AreEqual(1, TweetsFilter.FindEmoji(tweet).Count);
        }
Ejemplo n.º 6
0
        public void FindEmoji_WhenTweetDoesNotHaveAnyEmoji()
        {
            var tweet = new Tweet
            {
                Data = new TweetData
                {
                    Text = "Tweet text"
                }
            };

            Assert.AreEqual(0, TweetsFilter.FindEmoji(tweet).Count);
        }
Ejemplo n.º 7
0
        public void GetPercentTweetsWithEmoji_ReturnsPercentage_WhenThereTweetsWithEmoji()
        {
            var tweets = new List <Tweet> {
                new Tweet {
                    Data = new TweetData {
                        Text = "Congrats! 👏👏👏"
                    }
                }
            };

            var percentTweetsWithEmoji = TweetsFilter.GetPercentTweetsWithEmoji(tweets, tweets.Count * 3);

            Assert.AreEqual((decimal)33.33, percentTweetsWithEmoji);
        }
Ejemplo n.º 8
0
        public void GetTopHashtags_ReturnsTopThreeHashtags()
        {
            var hashtags = new List <string> {
                "Hashtag1",
                "Hashtag1",
                "Hashtag2",
                "Hashtag1",
                "Hashtag2",
                "Hashtag3",
                "Hashtag3",
                "Hashtag4"
            };

            var topHashtags = TweetsFilter.GetTopHashtags(hashtags);

            Assert.AreEqual(3, topHashtags.Count());
            Assert.AreEqual("Hashtag1", topHashtags[0]);
            Assert.AreEqual("Hashtag2", topHashtags[1]);
            Assert.AreEqual("Hashtag3", topHashtags[2]);
        }
Ejemplo n.º 9
0
        public void GetPercentTweetsWithUrls_ReturnsPercentage_WhenSomeTweetsHaveUrls()
        {
            var tweets = new List <Tweet> {
                new Tweet {
                    Data = new TweetData {
                        Entities = new TweetEntities {
                            Urls = new Url[] {
                                new Url {
                                    DisplayUrl = "pic.twitter.com/QNCBu0LkFx"
                                },
                                new Url {
                                    DisplayUrl = "not.twitter.com/ABC"
                                }
                            }
                        }
                    }
                }
            };

            Assert.AreEqual((decimal)33.33, TweetsFilter.GetPercentTweetsWithUrls(tweets, tweets.Count * 3));
        }
Ejemplo n.º 10
0
        private void UpdateEmojiLists(Tweet tweet)
        {
            try
            {
                var tweetText = tweet?.Data?.Text;

                if (!string.IsNullOrEmpty(tweetText))
                {
                    var emoji = TweetsFilter.FindEmoji(tweet);
                    if (emoji.Count > 0)
                    {
                        TweetsWithEmoji.Add(tweet);
                        AllEmoji.AddRange(emoji);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("[TWEET STATISTICS SERVICE][EXCPETION][UpdateEmojiLists]");
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
        }
Ejemplo n.º 11
0
        public void GetTopDomains_ReturnsTopThreeDomains()
        {
            const string Url1 = "https://www.twitter.com/ABC";
            const string Url2 = "https://www.wwe.com/DEF";
            const string Url3 = "https://www.cnn.com/GHI";

            var urls = new List <string> {
                Url1,
                Url1,
                Url2,
                Url1,
                Url2,
                Url3,
                Url3,
                "https://not.twitter.com/GHI"
            };

            var tweets = new List <Tweet> {
                new Tweet {
                    Data = new TweetData {
                        Entities = new TweetEntities {
                            Urls = new Url[] {
                                new Url {
                                    ExpandedUrl = Url1
                                },
                            }
                        }
                    }
                },
                new Tweet {
                    Data = new TweetData {
                        Entities = new TweetEntities {
                            Urls = new Url[] {
                                new Url {
                                    ExpandedUrl = Url1
                                },
                                new Url {
                                    ExpandedUrl = Url2
                                }
                            }
                        }
                    }
                },
                new Tweet {
                    Data = new TweetData {
                        Entities = new TweetEntities {
                            Urls = new Url[] {
                                new Url {
                                    ExpandedUrl = Url1
                                },
                                new Url {
                                    ExpandedUrl = Url2
                                },
                                new Url {
                                    ExpandedUrl = Url3
                                }
                            }
                        }
                    }
                },
                new Tweet {
                    Data = new TweetData {
                        Entities = new TweetEntities {
                            Urls = new Url[] {
                                new Url {
                                    ExpandedUrl = Url1
                                },
                                new Url {
                                    ExpandedUrl = Url2
                                },
                                new Url {
                                    ExpandedUrl = Url3
                                },
                                new Url {
                                    ExpandedUrl = "https://not.twitter.com/GHI"
                                }
                            }
                        }
                    }
                },
            };

            var hosts = TweetsFilter.GetTopDomains(urls);

            Assert.AreEqual(3, hosts.Count());
            Assert.AreEqual("www.twitter.com", hosts[0]);
            Assert.AreEqual("www.wwe.com", hosts[1]);
            Assert.AreEqual("www.cnn.com", hosts[2]);
        }
Ejemplo n.º 12
0
 public void FindEmoji_WhenATweetHasDifferentEmoji()
 {
     Assert.AreEqual(5, TweetsFilter.FindEmoji(TestData.TweetWithDifferentEmoji).Count);
 }
Ejemplo n.º 13
0
        public void GetPercentTweetsWithEmoji_ReturnsZero_WhenThereAreNoTweetsWithEmoji()
        {
            var percentTweetsWithEmoji = TweetsFilter.GetPercentTweetsWithEmoji(new List <Tweet>(), 1);

            Assert.AreEqual(0, percentTweetsWithEmoji);
        }
Ejemplo n.º 14
0
        public void GetTopHashtags_ReturnsEmptyList_WhenTweetsHaveNoUrls()
        {
            var hastags = TweetsFilter.GetTopHashtags(new List <string>());

            Assert.AreEqual(0, hastags.Count());
        }
Ejemplo n.º 15
0
        public void GetTopEmoji_ReturnsEmptyList_WhenThereAreNoTweetsWithEmoji()
        {
            var emoji = TweetsFilter.GetTopEmoji(new List <string>());

            Assert.AreEqual(0, emoji.Count());
        }
Ejemplo n.º 16
0
        public void GetPercentTweetsWithUrls_ReturnsZero_WhenTweetsHaveNoUrls()
        {
            var percentTweetsWithUrls = TweetsFilter.GetPercentTweetsWithUrls(new List <Tweet>(), 5);

            Assert.AreEqual(0, percentTweetsWithUrls);
        }
Ejemplo n.º 17
0
        public void GetTopDomains_ReturnsEmptyList_WhenTweetsHaveNoUrls()
        {
            var hosts = TweetsFilter.GetTopDomains(new List <string>());

            Assert.AreEqual(0, hosts.Count());
        }