2
2
using System . Globalization ;
3
3
using System . IO ;
4
4
using System . Linq ;
5
+ using System . Threading . Tasks ;
5
6
using Xunit ;
6
7
7
8
namespace TilingSample . Tests
@@ -12,10 +13,13 @@ public class TileGeneratorTests
12
13
private const string largeFileName = "landscape_12000x6000" ;
13
14
14
15
[ Fact ]
15
- public void CanCreateTiles ( )
16
+ public void L_CanCreateTiles ( )
16
17
{
17
18
var file = Path . Combine ( Environment . CurrentDirectory , $ "{ smallFileName } .jpg") ;
18
19
var tileDir = Path . Combine ( Environment . CurrentDirectory , $ "tiles_{ smallFileName } ") ;
20
+ var td = new DirectoryInfo ( tileDir ) ;
21
+ if ( td . Exists )
22
+ td . Delete ( true ) ;
19
23
20
24
var gen = new TileGenerator ( ) ;
21
25
@@ -26,10 +30,13 @@ public void CanCreateTiles()
26
30
}
27
31
28
32
[ Fact ]
29
- public void CanCreateTiles_Huge ( )
33
+ public void XL_CanCreateTiles ( )
30
34
{
31
35
var file = Path . Combine ( Environment . CurrentDirectory , $ "{ largeFileName } .jpg") ;
32
36
var tileDir = Path . Combine ( Environment . CurrentDirectory , $ "tiles_{ largeFileName } ") ;
37
+ var td = new DirectoryInfo ( tileDir ) ;
38
+ if ( td . Exists )
39
+ td . Delete ( true ) ;
33
40
34
41
var gen = new TileGenerator ( ) ;
35
42
@@ -39,6 +46,75 @@ public void CanCreateTiles_Huge()
39
46
Assert . True ( tiles . Any ( ) ) ;
40
47
}
41
48
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
+
42
118
[ Theory ]
43
119
[ InlineData ( 1.0f ) ]
44
120
[ InlineData ( 0.5f ) ]
@@ -48,6 +124,9 @@ public void CanRenderAtOriginWithDifferentZoomFactors(float zoomFactor)
48
124
{
49
125
var fileName = smallFileName ;
50
126
var tileDir = Path . Combine ( Environment . CurrentDirectory , $ "tiles_{ fileName } ") ;
127
+ var td = new DirectoryInfo ( tileDir ) ;
128
+ if ( td . Exists )
129
+ td . Delete ( true ) ;
51
130
var rndr = new TileRenderer ( 800 , 600 ) ;
52
131
var fn = Path . Combine ( Environment . CurrentDirectory , $ "x0_y0-z{ ( 1f / zoomFactor ) . ToString ( CultureInfo . InvariantCulture ) } -rnder{ rndr . Width } x{ rndr . Height } .jpeg") ;
53
132
@@ -63,6 +142,10 @@ public void CanRenderAtImageCenterWithDifferentZoomFactors(float zoomFactor)
63
142
{
64
143
var fileName = smallFileName ;
65
144
var tileDir = Path . Combine ( Environment . CurrentDirectory , $ "tiles_{ fileName } ") ;
145
+ var td = new DirectoryInfo ( tileDir ) ;
146
+ if ( td . Exists )
147
+ td . Delete ( true ) ;
148
+
66
149
var rndr = new TileRenderer ( 800 , 600 ) ;
67
150
var fn = Path . Combine ( Environment . CurrentDirectory , $ "x1700_y900z-{ ( 1f / zoomFactor ) . ToString ( CultureInfo . InvariantCulture ) } -rnder{ rndr . Width } x{ rndr . Height } .jpeg") ;
68
151
@@ -87,6 +170,10 @@ public void CanRenderHugeImageAtOriginWithDifferentZoomFactors(float zoomFactor)
87
170
{
88
171
var fileName = largeFileName ;
89
172
var tileDir = Path . Combine ( Environment . CurrentDirectory , $ "tiles_{ fileName } ") ;
173
+ var td = new DirectoryInfo ( tileDir ) ;
174
+ if ( td . Exists )
175
+ td . Delete ( true ) ;
176
+
90
177
var rndr = new TileRenderer ( 800 , 600 ) ;
91
178
var fn = Path . Combine ( Environment . CurrentDirectory , $ "{ fileName } x0_y0-z{ ( 1f / zoomFactor ) . ToString ( CultureInfo . InvariantCulture ) } -rnder{ rndr . Width } x{ rndr . Height } .jpeg") ;
92
179
0 commit comments