public void TestTimeSplit()
        {
            var ratings = new TimedRatings();

            ratings.Add(0, 0, 5.0f, new DateTime(2011, 10, 31));
            ratings.Add(0, 1, 4.5f, new DateTime(2011, 11, 1));
            ratings.Add(1, 0, 1.0f, new DateTime(2011, 10, 31));
            ratings.Add(1, 1, 2.5f, new DateTime(2011, 11, 2));

            var split1 = new RatingsChronologicalSplit(ratings, new DateTime(2011, 11, 2));

            Assert.AreEqual(3, split1.Train[0].Count);
            Assert.AreEqual(1, split1.Test[0].Count);
            Assert.AreEqual(2, split1.Train[0].ByUser[0].Count);
            Assert.AreEqual(1, split1.Train[0].ByUser[1].Count);
            Assert.AreEqual(0, split1.Test[0].ByUser[0].Count);
            Assert.AreEqual(1, split1.Test[0].ByUser[1].Count);
            Assert.AreEqual(new DateTime(2011, 10, 31), split1.Train[0].EarliestTime);
            Assert.AreEqual(new DateTime(2011, 11, 1), split1.Train[0].LatestTime);
            Assert.AreEqual(new DateTime(2011, 11, 2), split1.Test[0].EarliestTime);
            Assert.AreEqual(new DateTime(2011, 11, 2), split1.Test[0].LatestTime);

            var split2 = new RatingsChronologicalSplit(ratings, new DateTime(2011, 11, 1));

            Assert.AreEqual(2, split2.Train[0].Count);
            Assert.AreEqual(2, split2.Test[0].Count);
            Assert.AreEqual(1, split2.Train[0].ByUser[0].Count);
            Assert.AreEqual(1, split2.Train[0].ByUser[1].Count);
            Assert.AreEqual(1, split2.Test[0].ByUser[0].Count);
            Assert.AreEqual(1, split2.Test[0].ByUser[1].Count);
            Assert.AreEqual(new DateTime(2011, 10, 31), split2.Train[0].EarliestTime);
            Assert.AreEqual(new DateTime(2011, 10, 31), split2.Train[0].LatestTime);
            Assert.AreEqual(new DateTime(2011, 11, 1), split2.Test[0].EarliestTime);
            Assert.AreEqual(new DateTime(2011, 11, 2), split2.Test[0].LatestTime);
        }
		public void TestTimeSplit()
		{
			var ratings = new TimedRatings();
			ratings.Add(0, 0, 5.0f, new DateTime(2011, 10, 31));
			ratings.Add(0, 1, 4.5f, new DateTime(2011, 11, 1));
			ratings.Add(1, 0, 1.0f, new DateTime(2011, 10, 31));
			ratings.Add(1, 1, 2.5f, new DateTime(2011, 11, 2));

			var split1 = new RatingsChronologicalSplit(ratings, new DateTime(2011, 11, 2));
			Assert.AreEqual(3, split1.Train[0].Count);
			Assert.AreEqual(1, split1.Test[0].Count);
			Assert.AreEqual(2, split1.Train[0].ByUser[0].Count);
			Assert.AreEqual(1, split1.Train[0].ByUser[1].Count);
			Assert.AreEqual(0, split1.Test[0].ByUser[0].Count);
			Assert.AreEqual(1, split1.Test[0].ByUser[1].Count);
			Assert.AreEqual(new DateTime(2011, 10, 31), split1.Train[0].EarliestTime);
			Assert.AreEqual(new DateTime(2011, 11, 1),  split1.Train[0].LatestTime);
			Assert.AreEqual(new DateTime(2011, 11, 2), split1.Test[0].EarliestTime);
			Assert.AreEqual(new DateTime(2011, 11, 2), split1.Test[0].LatestTime);

			var split2 = new RatingsChronologicalSplit(ratings, new DateTime(2011, 11, 1));
			Assert.AreEqual(2, split2.Train[0].Count);
			Assert.AreEqual(2, split2.Test[0].Count);
			Assert.AreEqual(1, split2.Train[0].ByUser[0].Count);
			Assert.AreEqual(1, split2.Train[0].ByUser[1].Count);
			Assert.AreEqual(1, split2.Test[0].ByUser[0].Count);
			Assert.AreEqual(1, split2.Test[0].ByUser[1].Count);
			Assert.AreEqual(new DateTime(2011, 10, 31), split2.Train[0].EarliestTime);
			Assert.AreEqual(new DateTime(2011, 10, 31), split2.Train[0].LatestTime);
			Assert.AreEqual(new DateTime(2011, 11, 1), split2.Test[0].EarliestTime);
			Assert.AreEqual(new DateTime(2011, 11, 2), split2.Test[0].LatestTime);
		}