@@ -13,9 +13,9 @@ import 'package:path/path.dart' as path;
13
13
14
14
import 'shader_test_file_utils.dart' ;
15
15
16
- void main () {
16
+ void main () async {
17
17
test ('simple shader renders correctly' , () async {
18
- final FragmentProgram program = FragmentProgram .fromAsset (
18
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
19
19
'functions.frag.iplr' ,
20
20
);
21
21
final Shader shader = program.shader (
@@ -25,7 +25,7 @@ void main() {
25
25
});
26
26
27
27
test ('blue-green image renders green' , () async {
28
- final FragmentProgram program = FragmentProgram .fromAsset (
28
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
29
29
'blue_green_sampler.frag.iplr' ,
30
30
);
31
31
final Image blueGreenImage = await _createBlueGreenImage ();
@@ -39,7 +39,7 @@ void main() {
39
39
});
40
40
41
41
test ('shader with uniforms renders correctly' , () async {
42
- final FragmentProgram program = FragmentProgram .fromAsset (
42
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
43
43
'uniforms.frag.iplr' ,
44
44
);
45
45
@@ -65,7 +65,7 @@ void main() {
65
65
});
66
66
67
67
test ('The ink_sparkle shader is accepted' , () async {
68
- final FragmentProgram program = FragmentProgram .fromAsset (
68
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
69
69
'ink_sparkle.frag.iplr' ,
70
70
);
71
71
final Shader shader = program.shader (
@@ -79,7 +79,7 @@ void main() {
79
79
});
80
80
81
81
test ('Uniforms are sorted correctly' , () async {
82
- final FragmentProgram program = FragmentProgram .fromAsset (
82
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
83
83
'uniforms_sorted.frag.iplr' ,
84
84
);
85
85
@@ -97,7 +97,7 @@ void main() {
97
97
test ('fromAsset throws an exception on invalid assetKey' , () async {
98
98
bool throws = false ;
99
99
try {
100
- final FragmentProgram program = FragmentProgram .fromAsset (
100
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
101
101
'<invalid>' ,
102
102
);
103
103
} catch (e) {
@@ -109,7 +109,7 @@ void main() {
109
109
test ('fromAsset throws an exception on invalid data' , () async {
110
110
bool throws = false ;
111
111
try {
112
- final FragmentProgram program = FragmentProgram .fromAsset (
112
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
113
113
'DashInNooglerHat.jpg' ,
114
114
);
115
115
} catch (e) {
@@ -119,31 +119,31 @@ void main() {
119
119
});
120
120
121
121
test ('fromAsset accepts a shader with no uniforms' , () async {
122
- final FragmentProgram program = FragmentProgram .fromAsset (
122
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
123
123
'no_uniforms.frag.iplr' ,
124
124
);
125
125
final Shader shader = program.shader ();
126
126
await _expectShaderRendersGreen (shader);
127
127
});
128
128
129
129
// Test all supported GLSL ops. See lib/spirv/lib/src/constants.dart
130
- final Map <String , FragmentProgram > iplrSupportedGLSLOpShaders = _loadShaderAssets (
130
+ final Map <String , FragmentProgram > iplrSupportedGLSLOpShaders = await _loadShaderAssets (
131
131
path.join ('supported_glsl_op_shaders' , 'iplr' ),
132
132
'.iplr' ,
133
133
);
134
134
expect (iplrSupportedGLSLOpShaders.isNotEmpty, true );
135
135
_expectIplrShadersRenderGreen (iplrSupportedGLSLOpShaders);
136
136
137
137
// Test all supported instructions. See lib/spirv/lib/src/constants.dart
138
- final Map <String , FragmentProgram > iplrSupportedOpShaders = _loadShaderAssets (
138
+ final Map <String , FragmentProgram > iplrSupportedOpShaders = await _loadShaderAssets (
139
139
path.join ('supported_op_shaders' , 'iplr' ),
140
140
'.iplr' ,
141
141
);
142
142
expect (iplrSupportedOpShaders.isNotEmpty, true );
143
143
_expectIplrShadersRenderGreen (iplrSupportedOpShaders);
144
144
145
- test ('Equality depends on floatUniforms' , () {
146
- final FragmentProgram program = FragmentProgram .fromAsset (
145
+ test ('Equality depends on floatUniforms' , () async {
146
+ final FragmentProgram program = await FragmentProgram .fromAssetAsync (
147
147
'simple.frag.iplr' ,
148
148
);
149
149
final Float32List ones = Float32List .fromList (< double > [1 ]);
@@ -165,10 +165,10 @@ void main() {
165
165
});
166
166
167
167
test ('Equality depends on data' , () async {
168
- final FragmentProgram programA = FragmentProgram .fromAsset (
168
+ final FragmentProgram programA = await FragmentProgram .fromAssetAsync (
169
169
'simple.frag.iplr' ,
170
170
);
171
- final FragmentProgram programB = FragmentProgram .fromAsset (
171
+ final FragmentProgram programB = await FragmentProgram .fromAssetAsync (
172
172
'uniforms.frag.iplr' ,
173
173
);
174
174
final Shader a = programA.shader ();
@@ -225,21 +225,28 @@ Future<ByteData?> _imageByteDataFromShader({
225
225
// $FLUTTER_BUILD_DIRECTORY/gen/flutter/lib/spirv/test/$leafFolderName
226
226
// This is synchronous so that tests can be inside of a loop with
227
227
// the proper test name.
228
- Map <String , FragmentProgram > _loadShaderAssets (String leafFolderName, String ext) {
228
+ Future <Map <String , FragmentProgram >> _loadShaderAssets (
229
+ String leafFolderName,
230
+ String ext,
231
+ ) async {
229
232
final Map <String , FragmentProgram > out = SplayTreeMap <String , FragmentProgram >();
230
233
231
234
final Directory directory = shaderDirectory (leafFolderName);
232
235
if (! directory.existsSync ()) {
233
236
return out;
234
237
}
235
238
236
- directory
239
+ await Future .forEach (
240
+ directory
237
241
.listSync ()
238
- .where ((FileSystemEntity entry) => path.extension (entry.path) == ext)
239
- .forEach ((FileSystemEntity entry) {
240
- final String key = path.basenameWithoutExtension (entry.path);
241
- out[key] = FragmentProgram .fromAsset (path.basename (entry.path));
242
- });
242
+ .where ((FileSystemEntity entry) => path.extension (entry.path) == ext),
243
+ (FileSystemEntity entry) async {
244
+ final String key = path.basenameWithoutExtension (entry.path);
245
+ out[key] = await FragmentProgram .fromAssetAsync (
246
+ path.basename (entry.path),
247
+ );
248
+ },
249
+ );
243
250
return out;
244
251
}
245
252
0 commit comments