public void GetUrlGeneratorSmbc() { var smbcUrl = "http://www.smbc-comics.com/index.php?db=comics&id=614"; var smbcUrl0 = "http://www.smbc-comics.com/comics/20061010.gif"; var smbcUrl1 = "http://www.smbc-comics.com/comics/20061011.gif"; var smbcUrl2 = "http://www.smbc-comics.com/comics/20061012.gif"; var smbcParser = new ComicParser(smbcUrl); // get the generator object DateGenerator urlGen = (DateGenerator)smbcParser.GetUrlGenerator(); urlGen.Days = DateGenerator.EveryDay; // generate 10 urls, going backwards, including the original (and starting from the original) List <string> backUrls = urlGen.Get(-1, 10); // generate 10 urls, going forwards, excluding the original (and starting from the original) List <string> forwardUrls = urlGen.Get(0, 10); // each url should be the comic, directly // urls are sorted Assert.AreEqual(smbcUrl0, backUrls [0]); Assert.AreEqual(smbcUrl1, backUrls [1]); Assert.AreEqual(10, backUrls.Count()); Assert.AreEqual(smbcUrl1, forwardUrls [0]); Assert.AreEqual(smbcUrl2, forwardUrls [1]); Assert.AreEqual(10, forwardUrls.Count()); }
public void DownloadMany() { // choose target files to download var url = "http://www.smbc-comics.com/comics/20061001.gif"; // var url = "http://www.irregularwebcomic.net/55.html"; var parser = new ComicParser(url); var urlGen = parser.GetUrlGenerator() as DateGenerator; urlGen.Days = DateGenerator.EveryDay; var urls = urlGen.Get(0, 20); foreach (var x in urls) { Console.WriteLine(x); } var numComics = urls.Where <string> (x => x != String.Empty).Count(); using (var repo = new Repository()) { // set the gate AutoResetEvent auto = new AutoResetEvent(false); // event handler allows program to progress repo.MultipleDownloadsCompleted += delegate(object sender, EventArgs e) { auto.Set(); }; // begin the download and block repo.Download(urls); // auto.WaitOne (); // check that it worked Assert.AreEqual(numComics, repo.Files.Count); } }
public void GetDirectly() { var url = "http://comic.com/009.png"; var parser = new ComicParser(url); var img0 = "http://comic.com/613.png"; var img1 = "http://comic.com/614.png"; var img2 = "http://comic.com/615.png"; // get the generator object UrlGenerator urlGen = parser.GetUrlGenerator(); Assert.AreEqual("1", urlGen.Start); // generate 10 urls, starting from 605 List <string> backUrls = urlGen.Get(612, 10); // generate 10 urls, starting from 615 List <string> forwardUrls = urlGen.Get(614, 10); // each url should be the comic, directly // urls are sorted Assert.AreEqual(10, backUrls.Count()); Assert.AreEqual(img0, backUrls [0]); Assert.AreEqual(img1, backUrls [1]); Assert.AreEqual(img2, backUrls [2]); Assert.AreEqual(10, forwardUrls.Count()); Assert.AreEqual(img2, forwardUrls [0]); }
public void GetUrlGeneratorIrregularWebcomic() { var pageUrl = "http://www.irregularwebcomic.net/32.html"; var comicUrl = "http://www.irregularwebcomic.net/comics/irreg0032.jpg"; var parser = new ComicParser(pageUrl); var urlGen = parser.GetUrlGenerator(); Assert.AreEqual(comicUrl, urlGen.Comic.AbsoluteUri); }
public void GetUrlGeneratorXkcd() { var xkcdUrl = "http://xkcd.com/614"; var xkcdParser = new ComicParser(xkcdUrl); // get the generator object - should be the right type UrlGenerator urlGen = xkcdParser.GetUrlGenerator(); Assert.IsTrue(urlGen.ToString().Contains("SequentialGenerator")); }
public void TryRedirectToImgIrregularWebcomic() { var url = "http://www.irregularwebcomic.net/32.html"; var imgUrl = "http://www.irregularwebcomic.net/comics/irreg0032.jpg"; var parser = new ComicParser(url); var urlGen = parser.GetUrlGenerator(); Assert.AreEqual(imgUrl, urlGen.Comic.AbsoluteUri); parser = new ComicParser(imgUrl); urlGen = parser.GetUrlGenerator(); Assert.AreEqual(imgUrl, urlGen.Comic.AbsoluteUri); }
public void TryRedirectToImgSmbc() { var url = "http://www.smbc-comics.com/index.php?db=comics&id=614"; var imgUrl = "http://www.smbc-comics.com/comics/20061011.gif"; var parser = new ComicParser(url); var urlGen = parser.GetUrlGenerator(); Assert.AreEqual(imgUrl.Substring(10), urlGen.Comic.AbsoluteUri.Substring(10)); parser = new ComicParser(imgUrl); urlGen = parser.GetUrlGenerator(); Assert.AreEqual(imgUrl.Substring(10), urlGen.Comic.AbsoluteUri.Substring(10)); }
private UrlGenerator SetupTask() { var comic = new ComicUri(InputUrl); var parser = new ComicParser(InputUrl); var urlGen = parser.GetUrlGenerator(); // in the interests of simplicity, just start from given comicå urlGen.Start = comic.Indices [0]; return(urlGen); }
public void GetFromPageIrregularWebcomic() { var url = "http://www.irregularwebcomic.net/55.html"; var parser = new ComicParser(url); var urlGen = parser.GetUrlGenerator(); var urls = urlGen.Get(0, 20); Assert.AreEqual("http://www.irregularwebcomic.net/comics/irreg0001.jpg", urls[0]); Assert.AreEqual("http://www.irregularwebcomic.net/comics/irreg0002.jpg", urls[1]); Assert.AreEqual("http://www.irregularwebcomic.net/comics/irreg0003.jpg", urls[2]); Assert.AreEqual("http://www.irregularwebcomic.net/comics/irreg0004.jpg", urls[3]); Assert.AreEqual("http://www.irregularwebcomic.net/comics/irreg0005.jpg", urls[4]); }
public void CancelDownloads() { // choose target files to download var url = "http://www.smbc-comics.com/comics/20061001.gif"; // var url = "http://www.irregularwebcomic.net/55.html"; var parser = new ComicParser(url); var urlGen = parser.GetUrlGenerator() as DateGenerator; urlGen.Days = DateGenerator.EveryDay; var urls = urlGen.Get(0, 20); foreach (var x in urls) { Console.WriteLine(x); } using (var repo = new Repository()) { // set the gate AutoResetEvent auto = new AutoResetEvent(false); int num = 0; // event handler to count number of async downloads repo.DownloadFileCompleted += delegate(object sender, AsyncCompletedEventArgs e) { num += 1; // here we set the canceller if (num == 5) { repo.CancelDownloads(); auto.Set(); } }; // event handler allows program to progress (in case of cancel failure) repo.MultipleDownloadsCompleted += delegate(object sender, EventArgs e) { auto.Set(); }; // begin the download and block repo.Download(urls); auto.WaitOne(); // check that it worked Assert.AreEqual(5, repo.Files.Count); } }
public void GetFromPageXkcd() { var xkcdUrl = "http://xkcd.com/614"; var xkcdParser = new ComicParser(xkcdUrl); var xkcdImg = "http://imgs.xkcd.com/comics/woodpecker.png"; var xkcdImg2 = "http://imgs.xkcd.com/comics/avoidance.png"; // get the generator object UrlGenerator urlGen = xkcdParser.GetUrlGenerator(); Assert.AreEqual("1", urlGen.Start); // generate 10 urls, starting from 605 List <string> backUrls = urlGen.Get(605, 10); // generate 10 urls, starting from 615 List <string> forwardUrls = urlGen.Get(615, 10); // generate 10 urls, starting from 614 List <string> incUrls = urlGen.Get(614, 10); // each url should be the comic, directly // urls are sorted // foreach (var x in backUrls) { // Console.WriteLine (x); // } // Seems like this is a legitimate fail... // backUrls[0] is actually comic 606, expected 605 // further investigation required Assert.AreEqual(10, backUrls.Count()); Assert.AreEqual(xkcdImg, backUrls [9]); Assert.AreEqual(10, forwardUrls.Count()); Assert.AreEqual(xkcdImg2, forwardUrls [0]); Assert.AreEqual(10, incUrls.Count()); Assert.AreEqual(xkcdImg, incUrls [0]); Assert.AreEqual(xkcdImg2, incUrls [1]); }