public void geekListParse_NoComments_EditTimeStamp()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual("1257268282", result.editDateTimestamp);
        }
        public void searchParse_NotExact_YearPublished()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseSearchXML(testData);

            // Assert
            Assert.AreEqual(2013, result.First(x => x.ObjectID == 143085).yearPublished);
        }
        public void geekListParse_NoComments_ID()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(11205, result.id);
        }
        public void boardGameParse_SingleGameAllData_MaxPlayers()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(4, result.First(x => x.ObjectID == 124742).maxPlayers);
        }
        public void geekListParse_NoComments_Description()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            string expected = "You've mixed all your Carcassonne expansions together for the massive, every-expansion game.  Now you want to separate them to try a simple mix of no expansions, or only one with the original.  How are you going to tackle this daunting task?  Easy!  Look at the photos in this inventory, and parse the tiles appropriately.  (I recommend focusing on the expansions, and letting the original Carcassonne's 72 tiles remain as the distillate.)";

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(expected, result.description);
        }
        public void boardGameParse_SingleGameAllData_Description()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            string expected = "A shorter simpler description that is testable.  Duh.";

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(expected, result.First(x => x.ObjectID == 124742).description);
        }
        public void geekListParse_NoComments_EditDate()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            DateTime expected = DateTime.Parse("Tue, 03 Nov 2009 17:11:22 +0000");

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(expected, result.editDate);
        }
        public void boardGameParse_SingleGameAllData_ImageURL()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            string expected = "http://cf.geekdo-images.com/images/pic1324609.jpg";

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(expected, result.First(x => x.ObjectID == 124742).imageURL);
        }
        public void geekListParse_Comments_ListItemComment_Thumbs()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(3, result.items.First(x => x.id == 186614)
                                        .comments.First(x => x.username == "hfiguiere")
                                        .thumbs);
        }
        public void geekListParse_Comments_ListItemComment_PostDate()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            DateTime expected = DateTime.Parse("Mon, 19 Jan 2009 06:16:30 +0000");

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(expected, result.items.First(x => x.id == 186614)
                                        .comments.First(x => x.username == "hfiguiere")
                                        .postDate);
        }
        public void geekListParse_Comments_Username()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(1, result.comments.Count(x => x.username == "rokuroku"));
        }
        public void geekListParse_Comments_CommentText()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            string expected = "Why no listing for Cult, Siege and Creativity?";

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(expected, result.comments.First(x => x.username == "rokuroku").commentText);
        }
        public void boardGameParse_SingleGameAllData_Stats_Ranks_BayesAverage()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert to within a 5% confidence interval
            Assert.AreEqual(3.2550, result.First(x => x.ObjectID == 124742)
                                        .statistics.First(x => x.statDate == new DateTime(2012, 08, 12))
                                        .ranks.First(x => x.id == 1)
                                        .bayesAverage, 0.05);
        }
        public void boardGameParse_SingleGameAllData_Polls_TotalVotes()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(90, result.First(x => x.ObjectID == 124742).polls.First(x => x.pollName == "language_dependence").totalVotes);
        }
        public void boardGameParse_SingleGameAllData_Polls_Response_Value()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual("No necessary in-game text", result.First(x => x.ObjectID == 124742)
                                    .polls.First(x => x.pollName == "language_dependence")
                                    .resultsList.First(x => x.level == 1).responseValue);
        }
        public void boardGameParse_SingleGameAllData_Names_SortIndex()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(1, result.First(x => x.ObjectID == 124742).names.First(x => x.name == "Android: Netrunner").sortIndex);
        }
        public void geekListParse_NoComments_ListItemBody()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            string expected = "This is a safer version of the body to test.  Wooooo!";

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(expected, result.items.First(x => x.id == 186615).body);
        }
        public void geekListParse_NoComments_ListItemPostDate()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(new DateTime(2005, 11, 04, 02, 49, 54), result.items.First(x => x.id == 186615).postDate);
        }
        public void boardGameParse_SingleGameAllData_Stats_StandardDeviation()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert - Note the delta set to 5% to compensate for floats
            Assert.AreEqual(2.05223, result.First(x => x.ObjectID == 124742)
                                        .statistics.First(x => x.statDate == new DateTime(2012, 08, 12))
                                        .standardDeviation, 0.05);
        }
        public void geekListParse_NoComments_ListItemUserName()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual("rokuroku", result.items.First(x => x.id == 186615).userName);
        }
        public void boardGameParse_SingleGameAllData_Stats_Wanting()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(185, result.First(x => x.ObjectID == 124742)
                                        .statistics.First(x => x.statDate == new DateTime(2012, 08, 12))
                                        .wanting);
        }
        public void geekListParse_Comments_PostDate()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            DateTime expected = DateTime.Parse("Thu, 27 May 2010 13:32:48 +0000");

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(expected, result.comments.First(x => x.username == "rokuroku").postDate);
        }
        public void boardGameParse_SingleGameAllData_Comments_Comment()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();
            string expected = "Sounds really fun--I never got to play the original Netrunner (too busy with Magic at the time), but the theme and asymmetry sound really cool. ";

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(expected, result.First(x => x.ObjectID == 124742).comments.First(x => x.username == "A Strange Aeon").comment);
        }
        public void geekListParse_NoComments_Title()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual("Segregation in Carcassonne!", result.title);
        }
        public void boardGameParse_SingleGameAllData_Comments_Username()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(1, result.First(x => x.ObjectID == 124742).comments.Count(x => x.username =="A Strange Aeon"));
        }
        public void geekListParse_Comments_ListItemComment_CommentText()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            string expected = "On my copy of Inn and Cathedrals, they all have a little symbol (meeple shape), making them easier to segregate them. I wish they were all like that.";

            // Act
            var result = parser.parseGeekListXML(testData);

            // Assert
            Assert.AreEqual(expected, result.items.First(x => x.id == 186614)
                                        .comments.First(x => x.username == "hfiguiere")
                                        .commentText);
        }
        public void boardGameParse_SingleGameAllData_Honors_Value()
        {
            // Arrange
            XDocument testData = XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, testDataRelativePath));

            IXMLParser parser = new XMLParser();

            string expected = "2012 Golden Geek Best 2-Player Board Game Nominee";

            // Act
            var result = parser.parseBoardGameXML(testData);

            // Assert
            Assert.AreEqual(expected, result.First(x => x.ObjectID == 124742).honors.First(x => x.objectID == 20116).value);
        }