public void PrepareForImagesTest() { using (var tempDirectory = new TempDirectory(true)) { var manager = new ResultImageManager(); manager.DirectoryName = tempDirectory.Name; // ファイルがない場合 manager.PrepareForImages(); { Assert.Null(manager.GetImage("A")); Assert.Null(manager.GetImage("A")); } // ファイルがある場合 tempDirectory.AddFile(@"A\a.bmp", new Bitmap(10, 10)); tempDirectory.AddFile(@"B\b.bmp", new Bitmap(11, 10)); tempDirectory.AddFile(@"cdef.bmp", new Bitmap(12, 10)); Assert.True(File.Exists(tempDirectory.FullPath(@"A\a.bmp"))); Assert.True(File.Exists(tempDirectory.FullPath(@"B\b.bmp"))); Assert.True(File.Exists(tempDirectory.FullPath(@"cdef.bmp"))); Assert.Null(manager.PeekCache_TESTONLY("A")); Assert.Null(manager.PeekCache_TESTONLY("B")); Assert.Null(manager.PeekCache_TESTONLY("C")); { manager.PrepareForImages(); // var task = manager.GetTask_TESTONLY(); // task.Wait(); } var imageA0 = manager.PeekCache_TESTONLY("A"); Assert.AreEqual(10, imageA0.Width); Assert.AreEqual(11, manager.PeekCache_TESTONLY("B").Width); Assert.AreEqual(12, manager.PeekCache_TESTONLY("C").Width); Assert.AreEqual(12, manager.PeekCache_TESTONLY("D").Width); Assert.AreEqual(12, manager.PeekCache_TESTONLY("F").Width); var imageA1 = manager.GetImage("A"); Assert.AreSame(imageA0, imageA1); Assert.AreEqual(tempDirectory.FullPath(@"A\a.bmp"), imageA0.Tag); Assert.Null(manager.PeekCache_TESTONLY("A")); { manager.PrepareForImages(); // var task = manager.GetTask_TESTONLY(); // task.Wait(); } Assert.AreEqual(10, manager.PeekCache_TESTONLY("A").Width); { var image0 = manager.GetImage("A"); var image1 = manager.GetImage("A"); Assert.AreNotSame(image0, image1); Assert.AreEqual(tempDirectory.FullPath(@"A\a.bmp"), image0.Tag); Assert.AreEqual(tempDirectory.FullPath(@"A\a.bmp"), image1.Tag); } } }
public void ファイルが消されていた場合の処理() { using (var tempDirectory = new TempDirectory(true)) { var manager = new ResultImageManager(); tempDirectory.AddFile(@"A\a0.bmp", new Bitmap(10, 10)); tempDirectory.AddFile(@"A\a1.bmp", new Bitmap(11, 10)); tempDirectory.AddFile(@"A\a2.bmp", new Bitmap(12, 10)); manager.DirectoryName = tempDirectory.Name; { manager.PrepareForImages(); // var task = manager.GetTask_TESTONLY(); // task.Wait(); } tempDirectory.DeleteFile(@"A\a0.bmp"); tempDirectory.DeleteFile(@"A\a1.bmp"); tempDirectory.DeleteFile(@"A\a2.bmp"); { manager.PrepareForImages(); // var task = manager.GetTask_TESTONLY(); // task.Wait(); } Assert.NotNull(manager.GetImage("A")); Assert.Null(manager.GetImage("A")); } }
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)); } }