public static void Main()
        {
            var test = new DownloadSpeedTest();

            var cases = new [] {
                new TestCase {
                    TestName         = "Download Client",
                    DownloadFunction = addrs =>
                                       Parallel.ForEach(addrs,
                                                        addr => new DownloadClient(addr)
                                                        .Download())
                },
                new TestCase {
                    TestName         = "Download Request",
                    DownloadFunction = addrs =>
                                       Parallel.ForEach(addrs,
                                                        addr => new DownloadRequest(addr)
                                                        .Download())
                },
                new TestCase {
                    TestName         = "Async Download Request",
                    DownloadFunction = addrs => {
                        var reqs = addrs.Select(addr => new AsyncDownloadRequest(addr));
                        foreach (var req in reqs)
                        {
                            req.BeginDownloadingData();
                        }
                        foreach (var req in reqs)
                        {
                            req.WaitUntilDownloadFinishes();
                        }
                    }
                }
            };

            var assembly      = Assembly.GetExecutingAssembly();
            var wellFormedRss = assembly.GetEmbeddedFileText("RssExtractor.Tests", "TestData/WellFormedRss.xml");
            var feed          = new Feed("");

            feed.SetContent(wellFormedRss);
            var news = feed.GetNews().ToArray();

            test.Run(cases, news.Select(n => n.Address).ToArray());
        }
        public static void Main()
        {
            var test = new DownloadSpeedTest();

            var cases = new [] {
                new TestCase {
                    TestName = "Download Client",
                    DownloadFunction = addrs =>
                        Parallel.ForEach(addrs,
                            addr => new DownloadClient(addr)
                                         .Download())
                },
                new TestCase {
                    TestName = "Download Request",
                    DownloadFunction = addrs =>
                        Parallel.ForEach(addrs,
                            addr => new DownloadRequest(addr)
                                         .Download())
                },
                new TestCase {
                    TestName = "Async Download Request",
                    DownloadFunction = addrs => {
                        var reqs = addrs.Select(addr => new AsyncDownloadRequest(addr));
                        foreach(var req in reqs) {
                            req.BeginDownloadingData();
                        }
                        foreach(var req in reqs) {
                            req.WaitUntilDownloadFinishes();
                        }
                    }
                }
            };

            var assembly = Assembly.GetExecutingAssembly();
            var wellFormedRss = assembly.GetEmbeddedFileText("RssExtractor.Tests", "TestData/WellFormedRss.xml");
            var feed = new Feed("");
            feed.SetContent(wellFormedRss);
            var news = feed.GetNews().ToArray();

            test.Run(cases, news.Select(n => n.Address).ToArray());
        }