public void 並び順テスト()
        {
            using (var tempDirectory = new TempDirectory(true))
            {
                var manager = new ResultImageManager();

                tempDirectory.AddFile(@"A\file0.png", "");
                tempDirectory.AddFile(@"A\file1.png", "");
                tempDirectory.AddFile(@"A\file2.png", "");
                var now = new DateTime(2013, 7, 11, 0, 0, 0); // UTC
                EPuzzleTime.Now = now;

                var file0 = tempDirectory.GetFullPath(@"A\file0.png");
                var file1 = tempDirectory.GetFullPath(@"A\file1.png");
                var file2 = tempDirectory.GetFullPath(@"A\file2.png");

                Assert.False(manager.最後に表示してからもっとも時間が経過しているファイルから表示する);
                manager.DirectoryName = tempDirectory.Name;
                manager.最後に表示してからもっとも時間が経過しているファイルから表示する = true;
                Assert.True(manager.最後に表示してからもっとも時間が経過しているファイルから表示する);

                manager.UpdateAccessTime(file1, now + TimeSpan.FromSeconds(1d));
                manager.UpdateAccessTime(file0, now + TimeSpan.FromSeconds(2d));
                manager.UpdateAccessTime(file2, now + TimeSpan.FromSeconds(3d));

                Assert.AreEqual(file1, manager.GetFile("A"));
                Assert.AreEqual(file0, manager.GetFile("A"));
                Assert.AreEqual(file2, manager.GetFile("A"));

                Assert.AreEqual(file1, manager.GetFile("A"));
                Assert.AreEqual(file0, manager.GetFile("A"));
                Assert.AreEqual(file2, manager.GetFile("A"));

                EPuzzleTime.Now = now + TimeSpan.FromMinutes(1d);

                manager.UpdateAccessTime(file1);

                Assert.AreEqual(file0, manager.GetFile("A"));
                Assert.AreEqual(file2, manager.GetFile("A"));
                Assert.AreEqual(file1, manager.GetFile("A"));

                Assert.AreEqual(file0, manager.GetFile("A"));
                Assert.AreEqual(file2, manager.GetFile("A"));
                Assert.AreEqual(file1, manager.GetFile("A"));

                using (var tempFile = new TempFile())
                {
                    manager.ImageInfoContainerFileName = tempFile.Name;
                    manager.Save();

                    var manager2 = new ResultImageManager();
                    manager2.最後に表示してからもっとも時間が経過しているファイルから表示する = true;
                    manager2.DirectoryName = tempDirectory.Name;
                    manager2.ImageInfoContainerFileName = tempFile.Name;
                    manager2.Load();

                    Assert.AreEqual(file0, manager2.GetFile("A"));
                    Assert.AreEqual(file2, manager2.GetFile("A"));
                    Assert.AreEqual(file1, manager2.GetFile("A"));
                }
                using (var tempFile = new TempFile())
                {
                    // 消したファイルの情報は保存しない

                    manager.ImageInfoContainerFileName = tempFile.Name;
                    tempDirectory.DeleteFile(@"A\file1.png");
                    tempDirectory.DeleteFile(@"A\file2.png");

                    manager.Save();

                    var manager2 = new ResultImageManager();
                    manager2.最後に表示してからもっとも時間が経過しているファイルから表示する = true;
                    manager2.DirectoryName = tempDirectory.Name;
                    manager2.ImageInfoContainerFileName = tempFile.Name;
                    manager2.Load();

                    var imageInfoContainer = (ImageInfoContainer)TestUtility.GetValue(manager2, "_imageInfoContainer");
                    Assert.NotNull(imageInfoContainer);
                    Assert.AreEqual(1, imageInfoContainer.ImageInfos.Count());
                    CollectionAssert.AreEqual(new [] { file0, }, imageInfoContainer.ImageInfos.Keys);
                }

                // UpdateAccessTimeにnullなどを渡した場合

                Assert.Throws<ArgumentNullException>(() =>
                {
                    manager.UpdateAccessTime(null);
                });
                Assert.Throws<ArgumentException>(() =>
                {
                    manager.UpdateAccessTime(" ");
                });
                Assert.Throws<ArgumentException>(() =>
                {
                    manager.UpdateAccessTime("");
                });
            }
        }
        public void Test0()
        {
            using (var tempDirectory = new TempDirectory(true))
            {
                var manager = new ResultImageManager();

                tempDirectory.AddFile(@"A\file0.png", "");
                tempDirectory.AddFile(@"B\file0.bmp", "");
                tempDirectory.AddFile(@"D\file0.txt", "");
                manager.DirectoryName = tempDirectory.Name;
                Assert.AreEqual(tempDirectory.GetFullPath(@"A\file0.png"), manager.GetFile("A"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"A\file0.png"), manager.GetFile("A"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"A\file0.png"), manager.GetFile("A"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"B\file0.bmp"), manager.GetFile("B"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"B\file0.bmp"), manager.GetFile("B"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"B\file0.bmp"), manager.GetFile("B"));
                Assert.Null(manager.GetFile("C"));
                Assert.Null(manager.GetFile("C"));
                Assert.Null(manager.GetFile("C"));
                Assert.Null(manager.GetFile("D"));
                Assert.Null(manager.GetFile("D"));
                Assert.Null(manager.GetFile("D"));

                tempDirectory.AddFile(@"file3.jpg", "");
                Assert.AreEqual(tempDirectory.GetFullPath(@"file3.jpg"), manager.GetFile("C"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"file3.jpg"), manager.GetFile("C"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"file3.jpg"), manager.GetFile("C"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"file3.jpg"), manager.GetFile("D"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"file3.jpg"), manager.GetFile("D"));
                Assert.AreEqual(tempDirectory.GetFullPath(@"file3.jpg"), manager.GetFile("D"));

                tempDirectory.AddFile(@"A\file1.png", "");
                manager.Refresh();
                CollectionAssert.AreEquivalent(new []
                {
                    tempDirectory.GetFullPath(@"A\file0.png"),
                    tempDirectory.GetFullPath(@"A\file0.png"),
                    tempDirectory.GetFullPath(@"A\file1.png"),
                    tempDirectory.GetFullPath(@"A\file1.png"),

                }, new []
                {
                    manager.GetFile("A"),
                    manager.GetFile("A"),
                    manager.GetFile("A"),
                    manager.GetFile("A"),
                });

                manager.Refresh();
                var file = manager.GetFile("A", false);
                Assert.AreEqual(file, manager.GetFile("A", false));
                Assert.AreEqual(file, manager.GetFile("A", false));
                Assert.AreEqual(file, manager.GetFile("A", false));
                Assert.AreEqual(file, manager.GetFile("A", false));
                Assert.AreEqual(file, manager.GetFile("A", false));
                Assert.AreEqual(file, manager.GetFile("A", false));
            }
        }