Skip to content

Commit 65ddb39

Browse files
committed
Tested various generatetile approaches
1 parent 31c7c7b commit 65ddb39

File tree

4 files changed

+386
-16
lines changed

4 files changed

+386
-16
lines changed

TilingSample.Tests/TileGeneratorTests.cs

Lines changed: 89 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Globalization;
33
using System.IO;
44
using System.Linq;
5+
using System.Threading.Tasks;
56
using Xunit;
67

78
namespace TilingSample.Tests
@@ -12,10 +13,13 @@ public class TileGeneratorTests
1213
private const string largeFileName = "landscape_12000x6000";
1314

1415
[Fact]
15-
public void CanCreateTiles()
16+
public void L_CanCreateTiles()
1617
{
1718
var file = Path.Combine(Environment.CurrentDirectory, $"{smallFileName}.jpg");
1819
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{smallFileName}");
20+
var td = new DirectoryInfo(tileDir);
21+
if (td.Exists)
22+
td.Delete(true);
1923

2024
var gen = new TileGenerator();
2125

@@ -26,10 +30,13 @@ public void CanCreateTiles()
2630
}
2731

2832
[Fact]
29-
public void CanCreateTiles_Huge()
33+
public void XL_CanCreateTiles()
3034
{
3135
var file = Path.Combine(Environment.CurrentDirectory, $"{largeFileName}.jpg");
3236
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{largeFileName}");
37+
var td = new DirectoryInfo(tileDir);
38+
if (td.Exists)
39+
td.Delete(true);
3340

3441
var gen = new TileGenerator();
3542

@@ -39,6 +46,75 @@ public void CanCreateTiles_Huge()
3946
Assert.True(tiles.Any());
4047
}
4148

49+
[Fact]
50+
public void XL_CanCreateTilesInParallel()
51+
{
52+
var file = Path.Combine(Environment.CurrentDirectory, $"{largeFileName}.jpg");
53+
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{largeFileName}");
54+
var td = new DirectoryInfo(tileDir);
55+
if (td.Exists)
56+
td.Delete(true);
57+
58+
var gen = new TileGenerator();
59+
60+
gen.GenerateTilesInParallel(file, tileDir);
61+
62+
var tiles = Directory.EnumerateFiles(tileDir, "*.*", SearchOption.AllDirectories);
63+
Assert.True(tiles.Any());
64+
}
65+
66+
[Fact]
67+
public async Task XL_CanCreateTilesAsync()
68+
{
69+
70+
var file = Path.Combine(Environment.CurrentDirectory, $"{largeFileName}.jpg");
71+
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{largeFileName}");
72+
var td = new DirectoryInfo(tileDir);
73+
if(td.Exists)
74+
td.Delete(true);
75+
76+
var gen = new TileGenerator();
77+
78+
await gen.GenerateTilesAsync(file, tileDir);
79+
80+
var tiles = Directory.EnumerateFiles(tileDir, "*.*", SearchOption.AllDirectories);
81+
Assert.True(tiles.Any());
82+
}
83+
84+
[Fact]
85+
public async Task XL_CanCreateTilesAsyncInParallel()
86+
{
87+
var file = Path.Combine(Environment.CurrentDirectory, $"{largeFileName}.jpg");
88+
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{largeFileName}");
89+
var td = new DirectoryInfo(tileDir);
90+
if (td.Exists)
91+
td.Delete(true);
92+
93+
var gen = new TileGenerator();
94+
95+
await gen.GenerateTilesAsync(file, tileDir, -1);
96+
97+
var tiles = Directory.EnumerateFiles(tileDir, "*.*", SearchOption.AllDirectories);
98+
Assert.True(tiles.Any());
99+
}
100+
101+
[Fact]
102+
public async Task XL_CanCreateTilesAsyncInParallel_LimitingParallelizationToOne()
103+
{
104+
var file = Path.Combine(Environment.CurrentDirectory, $"{largeFileName}.jpg");
105+
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{largeFileName}");
106+
var td = new DirectoryInfo(tileDir);
107+
if (td.Exists)
108+
td.Delete(true);
109+
110+
var gen = new TileGenerator();
111+
112+
await gen.GenerateTilesAsync(file, tileDir, 1);
113+
114+
var tiles = Directory.EnumerateFiles(tileDir, "*.*", SearchOption.AllDirectories);
115+
Assert.True(tiles.Any());
116+
}
117+
42118
[Theory]
43119
[InlineData(1.0f)]
44120
[InlineData(0.5f)]
@@ -48,6 +124,9 @@ public void CanRenderAtOriginWithDifferentZoomFactors(float zoomFactor)
48124
{
49125
var fileName = smallFileName;
50126
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{fileName}");
127+
var td = new DirectoryInfo(tileDir);
128+
if (td.Exists)
129+
td.Delete(true);
51130
var rndr = new TileRenderer(800, 600);
52131
var fn = Path.Combine(Environment.CurrentDirectory, $"x0_y0-z{(1f/zoomFactor).ToString(CultureInfo.InvariantCulture)}-rnder{rndr.Width}x{rndr.Height}.jpeg");
53132

@@ -63,6 +142,10 @@ public void CanRenderAtImageCenterWithDifferentZoomFactors(float zoomFactor)
63142
{
64143
var fileName = smallFileName;
65144
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{fileName}");
145+
var td = new DirectoryInfo(tileDir);
146+
if (td.Exists)
147+
td.Delete(true);
148+
66149
var rndr = new TileRenderer(800, 600);
67150
var fn = Path.Combine(Environment.CurrentDirectory, $"x1700_y900z-{(1f / zoomFactor).ToString(CultureInfo.InvariantCulture)}-rnder{rndr.Width}x{rndr.Height}.jpeg");
68151

@@ -87,6 +170,10 @@ public void CanRenderHugeImageAtOriginWithDifferentZoomFactors(float zoomFactor)
87170
{
88171
var fileName = largeFileName;
89172
var tileDir = Path.Combine(Environment.CurrentDirectory, $"tiles_{fileName}");
173+
var td = new DirectoryInfo(tileDir);
174+
if (td.Exists)
175+
td.Delete(true);
176+
90177
var rndr = new TileRenderer(800, 600);
91178
var fn = Path.Combine(Environment.CurrentDirectory, $"{fileName}x0_y0-z{(1f / zoomFactor).ToString(CultureInfo.InvariantCulture)}-rnder{rndr.Width}x{rndr.Height}.jpeg");
92179

TilingSample.sln

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 17
44
VisualStudioVersion = 17.11.35219.272
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TilingSample", "TilingSample\TilingSample.csproj", "{EBF17A2A-2F25-4257-BEC6-61CEECF3A1FB}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TilingSample", "TilingSample\TilingSample.csproj", "{EBF17A2A-2F25-4257-BEC6-61CEECF3A1FB}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TilingSample.Tests", "TilingSample.Tests\TilingSample.Tests.csproj", "{B6F9DFFB-7944-489E-8691-C295B4C0B1B9}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TilingSample.Tests", "TilingSample.Tests\TilingSample.Tests.csproj", "{B6F9DFFB-7944-489E-8691-C295B4C0B1B9}"
9+
EndProject
10+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D87C4164-0F07-456A-8547-677EB25102CB}"
11+
ProjectSection(SolutionItems) = preProject
12+
readme.md = readme.md
13+
EndProjectSection
914
EndProject
1015
Global
1116
GlobalSection(SolutionConfigurationPlatforms) = preSolution

0 commit comments

Comments
 (0)