public void GetFileMetadataCutsTest()
        {
            FileMetadataInfo[] infos = new FileMetadataInfo[]
            {
                new FileMetadataInfo(new DateTime(1000, 1, 1), new DateTime(1000, 1, 2)),
                new FileMetadataInfo(new DateTime(2000, 1, 1), new DateTime(2000, 1, 2)),
                new FileMetadataInfo(new DateTime(3000, 1, 1), new DateTime(3000, 1, 2)),
                new FileMetadataInfo(new DateTime(4000, 1, 1), new DateTime(4000, 1, 2)),
                new FileMetadataInfo(new DateTime(5000, 1, 1), new DateTime(5000, 1, 2)),
            };

            DateTime startTime;
            DateTime endTime;
            DateTime startCut;
            DateTime endCut;

            startTime = DateTime.MinValue.ToUniversalTime();
            endTime   = startTime + TimeSpan.FromDays(1);
            FileMetadataFilter.GetFileMetadataCuts(infos, startTime, endTime, out startCut, out endCut);
            Assert.AreEqual(DateTime.MinValue.ToUniversalTime(), startCut);
            Assert.AreEqual(new DateTime(1000, 1, 2), endCut);

            startTime = DateTime.MaxValue.ToUniversalTime() - TimeSpan.FromDays(1);
            endTime   = DateTime.MaxValue.ToUniversalTime();
            FileMetadataFilter.GetFileMetadataCuts(infos, startTime, endTime, out startCut, out endCut);
            Assert.AreEqual(new DateTime(5000, 1, 1), startCut);
            Assert.AreEqual(DateTime.MaxValue.ToUniversalTime(), endCut);

            startTime = new DateTime(2000, 1, 1);
            endTime   = new DateTime(3000, 1, 2);
            FileMetadataFilter.GetFileMetadataCuts(infos, startTime, endTime, out startCut, out endCut);
            Assert.AreEqual(new DateTime(1000, 1, 1), startCut);
            Assert.AreEqual(new DateTime(4000, 1, 2), endCut);

            startTime = new DateTime(2000, 1, 3);
            endTime   = new DateTime(4000, 1, 3);
            FileMetadataFilter.GetFileMetadataCuts(infos, startTime, endTime, out startCut, out endCut);
            Assert.AreEqual(new DateTime(2000, 1, 1), startCut);
            Assert.AreEqual(new DateTime(5000, 1, 2), endCut);

            startTime = new DateTime(100, 1, 1);
            endTime   = new DateTime(9000, 1, 1);
            FileMetadataFilter.GetFileMetadataCuts(infos, startTime, endTime, out startCut, out endCut);
            Assert.AreEqual(DateTime.MinValue.ToUniversalTime(), startCut);
            Assert.AreEqual(DateTime.MaxValue.ToUniversalTime(), endCut);

            startTime = DateTime.MinValue.ToUniversalTime();
            endTime   = new DateTime(4000, 1, 3);
            FileMetadataFilter.GetFileMetadataCuts(infos, startTime, endTime, out startCut, out endCut);
            Assert.AreEqual(DateTime.MinValue.ToUniversalTime(), startCut);
            Assert.AreEqual(new DateTime(5000, 1, 2), endCut);

            startTime = new DateTime(4000, 1, 1);
            endTime   = DateTime.MaxValue.ToUniversalTime();
            FileMetadataFilter.GetFileMetadataCuts(infos, startTime, endTime, out startCut, out endCut);
            Assert.AreEqual(new DateTime(3000, 1, 1), startCut);
            Assert.AreEqual(DateTime.MaxValue.ToUniversalTime(), endCut);
        }
        public void FileMetadataInfoConstructorTest()
        {
            DateTime         expectedCreationTime  = new DateTime(2, 2, 2, 2, 2, 2, DateTimeKind.Utc);
            DateTime         expectedLastWriteTime = new DateTime(3, 3, 3, 3, 3, 3, DateTimeKind.Utc);
            FileMetadataInfo info = new FileMetadataInfo(expectedCreationTime, expectedLastWriteTime);

            Assert.AreEqual(expectedCreationTime, info.CreationTimeUtc);
            Assert.AreEqual(expectedLastWriteTime, info.LastWriteTimeUtc);
        }