public void RemoveInBetweenTest() { var repo = new FakePdfRepository(GetDummyFileList(3)); var service = new CyclicPdfService(repo); var document = (FakePdfDocument)service.GetNextDocument(); Assert.AreEqual(GetDummyFileName(0), document.FileName); // remove in between repo.FileList.Remove(GetDummyFileName(1)); document = (FakePdfDocument)service.GetNextDocument(); Assert.AreEqual(GetDummyFileName(2), document.FileName); }
public void NoFilesTest() { var repo = new FakePdfRepository(GetDummyFileList(0)); var service = new CyclicPdfService(repo); service.GetNextDocument(); }
public void OtherFileChangedTest() { var repo = new FakePdfRepository(GetDummyFileList(3)); var service = new CyclicPdfService(repo); var eventTriggered = false; service.OnInvalidate += delegate { eventTriggered = true; }; service.GetNextDocument(); // dummy file #0 service.GetNextDocument(); // dummy file #1 // we now change dummy file #0 and ensure the event is not triggered repo.RaiseDataChangedEvent(new ChangedPdfEventArgs(GetDummyFileName(0))); Thread.Sleep(2100); Assert.IsFalse(eventTriggered); }
public void AddInBetweenTest() { var filelist = new List <string> { "a.pdf", "c.pdf" }; var repo = new FakePdfRepository(filelist); var service = new CyclicPdfService(repo); var document = (FakePdfDocument)service.GetNextDocument(); Assert.AreEqual("a.pdf", document.FileName); // add in between repo.FileList.Add("b.pdf"); document = (FakePdfDocument)service.GetNextDocument(); Assert.AreEqual("b.pdf", document.FileName); document = (FakePdfDocument)service.GetNextDocument(); Assert.AreEqual("c.pdf", document.FileName); }
public void CurrentFileChangedTest() { var repo = new FakePdfRepository(GetDummyFileList(3)); var service = new CyclicPdfService(repo); var eventTriggered = 0; service.OnInvalidate += delegate { eventTriggered++; }; service.GetNextDocument(); // fake pdf #0 repo.RaiseDataChangedEvent(new ChangedPdfEventArgs(GetDummyFileName(0))); repo.RaiseDataChangedEvent(new ChangedPdfEventArgs(GetDummyFileName(0))); // triggering twice should not change anything Assert.AreEqual(0, eventTriggered); // CyclicPdfService should delay the event by about 2 seconds Thread.Sleep(500); repo.RaiseDataChangedEvent(new ChangedPdfEventArgs(GetDummyFileName(0))); // triggering again should not change anything Thread.Sleep(2100); Assert.AreEqual(1, eventTriggered); // the event should now be triggered repo.RaiseDataChangedEvent(new ChangedPdfEventArgs(GetDummyFileName(0))); Thread.Sleep(2100); Assert.AreEqual(1, eventTriggered); // triggering again should not change anything var doc = (FakePdfDocument)service.GetNextDocument(); // this should re-enable the event Assert.AreEqual(GetDummyFileName(0), doc.FileName); // because our current file has changed, GetNextDocument() should return it again service.GetNextDocument(); // current document: fake PDF #1 repo.RaiseDataChangedEvent(new ChangedPdfEventArgs(GetDummyFileName(1))); // change the new current document Assert.AreEqual(1, eventTriggered); // delay is still active... Thread.Sleep(2100); Assert.AreEqual(2, eventTriggered); // now it should be triggered twice }
private void NPdfTest(int n) { var repo = new FakePdfRepository(GetDummyFileList(n)); var service = new CyclicPdfService(repo); for (int i = 0; i < 16; i++) { for (int j = 0; j < n; j++) { var document = (FakePdfDocument)service.GetNextDocument(); Assert.AreEqual(GetDummyFileName(j), document.FileName); } } }
private void LoadNextPdf() { retryTimer.Stop(); try { pdfRenderer.Load(pdfService.GetNextDocument()); } catch (FileNotFoundException) { // no PDF file available ShowError(Properties.Resources.NoAnnouncementsAvailable); StartRetryTimer(settings.EmptyPollingDelay); return; } catch (DirectoryNotFoundException) { // error reading directory ShowError(Properties.Resources.DirectoryReadError); StartRetryTimer(settings.EmptyPollingDelay); return; } catch (PdfAccessException e) { // something else went wrong when opening an existing PDF file. string fileName = e.Data.Contains("fileName") ? (string)e.Data["fileName"] : "unknown"; ShowError(string.Format(Properties.Resources.PdfAccessError, fileName)); StartRetryTimer(settings.ErrorDisplayDelay); return; } // everything went fine! scroller.Restart(); HideError(); }