public void TopNKeywords_NBiggerThanNumberOfKeywords()
        {
            //Setup papers and keywords in database
            int year = 1999;
            Keyword someKeyword = new Keyword("top");
            Keyword someOtherKeyword = new Keyword("other");
            Paper somePaper = new Paper("Name of paper", year);
            somePaper.addKeyWord(someKeyword);
            Paper someOtherPaper = new Paper("Name of other paper", year);
            someOtherPaper.addKeyWord(someKeyword);
            someOtherPaper.addKeyWord(someOtherKeyword);
            SystematicMappingSystem sms = new SystematicMappingSystem();
            //Add papers to mapping system
            sms.AddPaper(somePaper);
            sms.AddPaper(someOtherPaper);

            //now we will get the top 3 keywords from the SystematicMappingSystem stored as a list
            int N = 3;
            //this should return a list of size 2 since there are only 2 keywords for this year
            List<Keyword> keywords = sms.GetTopNKeywordsForYear(N, year);

            //Check that there are two keywords in the list
            Assert.Equals(keywords.Count, 2);
            //Check that it returned the top keywords in order
            Assert.IsTrue(keywords.ElementAt(0).Equals(someKeyword));
            Assert.IsTrue(keywords.ElementAt(1).Equals(someOtherKeyword));
        }
        public void TopNKeywords_InvalidYear()
        {
            //Setup papers and keywords in database
            int year = 1999;
            Keyword someKeyword = new Keyword("top");
            Keyword someOtherKeyword = new Keyword("other");
            Paper somePaper = new Paper("Name of paper", year);
            somePaper.addKeyWord(someKeyword);
            Paper someOtherPaper = new Paper("Name of other paper", year);
            someOtherPaper.addKeyWord(someKeyword);
            someOtherPaper.addKeyWord(someOtherKeyword);
            SystematicMappingSystem sms = new SystematicMappingSystem();
            //Add papers to mapping system
            sms.AddPaper(somePaper);
            sms.AddPaper(someOtherPaper);

            //now we will get the top 2 keywords from the SystematicMappingSystem stored as a list for year 0, which is invalid
            int N = 2;

            List<Keyword> keywords = sms.GetTopNKeywordsForYear(N, 0);

            Assert.Fail();
        }
        public void TopNKeywords_InvalidFutureYear()
        {
            //Setup papers and keywords in database
            int year = 1999;
            Keyword someKeyword = new Keyword("top");
            Keyword someOtherKeyword = new Keyword("other");
            Paper somePaper = new Paper("Name of paper", year);
            somePaper.addKeyWord(someKeyword);
            Paper someOtherPaper = new Paper("Name of other paper", year);
            someOtherPaper.addKeyWord(someKeyword);
            someOtherPaper.addKeyWord(someOtherKeyword);
            SystematicMappingSystem sms = new SystematicMappingSystem();
            //Add papers to mapping system
            sms.AddPaper(somePaper);
            sms.AddPaper(someOtherPaper);

            //now we will query for keywords to papers for a year in the future
            int N = 2;

            List<Keyword> keywords = sms.GetTopNKeywordsForYear(N, 2020);

            Assert.Fail();
        }
        public void TopNKeywords_NormalPath()
        {
            //Setup papers and keywords in database
            int year = 1999;
            Keyword someKeyword = new Keyword("top");
            Keyword someOtherKeyword = new Keyword("other");
            Paper somePaper = new Paper("Name of paper", year);
            somePaper.addKeyWord(someKeyword);
            Paper someOtherPaper = new Paper("Name of other paper", year);
            someOtherPaper.addKeyWord(someKeyword);
            someOtherPaper.addKeyWord(someOtherKeyword);
            SystematicMappingSystem sms = new SystematicMappingSystem();
            //Add papers to mapping system
            sms.AddPaper(somePaper);
            sms.AddPaper(someOtherPaper);

            //now we will get the top 2 keywords from the SystematicMappingSystem stored as a list
            int N = 2;

            List<Keyword> keywords = sms.GetTopNKeywordsForYear(N, year);

            //Check that there are two keywords in the list
            Assert.Equals(keywords.Count, N);
            //Check that it returned the top keywords in order
            Assert.IsTrue(keywords.ElementAt(0).Equals(someKeyword));
            Assert.IsTrue(keywords.ElementAt(1).Equals(someOtherKeyword));
        }
        public void TopNKeywords_NoKeywordsForYear()
        {
            //Setup papers and keywords in database
            //We still add these just in case it returns these instead of nothing
            int year = 1999;
            Keyword someKeyword = new Keyword("top");
            Keyword someOtherKeyword = new Keyword("other");
            Paper somePaper = new Paper("Name of paper", year);
            somePaper.addKeyWord(someKeyword);
            Paper someOtherPaper = new Paper("Name of other paper", year);
            someOtherPaper.addKeyWord(someKeyword);
            someOtherPaper.addKeyWord(someOtherKeyword);
            SystematicMappingSystem sms = new SystematicMappingSystem();
            //Add papers to mapping system
            sms.AddPaper(somePaper);
            sms.AddPaper(someOtherPaper);

            //now we will get the top 2 keywords from the SystematicMappingSystem stored as a list for year 1998, which has no papers
            int N = 2;

            List<Keyword> keywords = sms.GetTopNKeywordsForYear(N, 1998);
            //There should be no keywords for this year;
            Assert.Equals(keywords.Count,0);
        }