public void GetUriTest() { // arrange var request = new BasicRequest("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", new[] { "a", "b", "c" }); var tileInfo = new TileInfo { Index = new TileIndex(3, 4, 5) }; // act var url = request.GetUri(tileInfo); // assert Assert.True(url.ToString() == "http://a.tile.openstreetmap.org/5/3/4.png"); }
public void GetUriInParallelTest() { // arrange var request = new BasicRequest("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", new[] { "a", "b", "c" }); var tileInfo = new TileInfo { Index = new TileIndex(3, 4, 5) }; var urls = new ConcurrentBag <Uri>(); // List is not thread save // act var requests = new List <Func <Uri> >(); for (var i = 0; i < 100; i++) { requests.Add(() => request.GetUri(tileInfo)); } Parallel.ForEach(requests, r => urls.Add(r())); // assert Assert.True(urls.FirstOrDefault(u => u.ToString() == "http://b.tile.openstreetmap.org/5/3/4.png") != null); }