Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 8e11659

Browse files
author
Harry Terkelsen
authored
[canvaskit] Fix Shader program tests (#37644)
1 parent 2c1e5ef commit 8e11659

File tree

2 files changed

+60
-59
lines changed

2 files changed

+60
-59
lines changed

lib/web_ui/test/canvaskit/canvaskit_api_test.dart

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,47 @@ void _shaderTests() {
347347
),
348348
isNotNull);
349349
});
350+
351+
test('RuntimeEffect', () {
352+
// TODO(hterkelsen): Remove this check when local CanvasKit is default.
353+
if (isRuntimeEffectAvailable) {
354+
const String kSkSlProgram = r'''
355+
half4 main(vec2 fragCoord) {
356+
return vec4(1.0, 0.0, 0.0, 1.0);
357+
}
358+
''';
359+
360+
final SkRuntimeEffect? effect = MakeRuntimeEffect(kSkSlProgram);
361+
expect(effect, isNotNull);
362+
363+
const String kInvalidSkSlProgram = '';
364+
365+
// Invalid SkSL returns null.
366+
final SkRuntimeEffect? invalidEffect = MakeRuntimeEffect(kInvalidSkSlProgram);
367+
expect(invalidEffect, isNull);
368+
369+
final SkShader? shader = effect!.makeShader(<double>[]);
370+
expect(shader, isNotNull);
371+
372+
// mismatched uniforms returns null.
373+
final SkShader? invalidShader = effect.makeShader(<double>[1]);
374+
375+
expect(invalidShader, isNull);
376+
377+
const String kSkSlProgramWithUniforms = r'''
378+
uniform vec4 u_color;
379+
380+
half4 main(vec2 fragCoord) {
381+
return u_color;
382+
}
383+
''';
384+
385+
final SkShader? shaderWithUniform = MakeRuntimeEffect(kSkSlProgramWithUniforms)
386+
!.makeShader(<double>[1.0, 0.0, 0.0, 1.0]);
387+
388+
expect(shaderWithUniform, isNotNull);
389+
}
390+
});
350391
}
351392

352393
SkShader _makeTestShader() {
@@ -1707,46 +1748,4 @@ void _paragraphTests() {
17071748
canvasKit.TextHeightBehavior.DisableAll,
17081749
);
17091750
});
1710-
1711-
test('RuntimeEffect', () {
1712-
// Is supported..
1713-
expect(isRuntimeEffectAvailable, isTrue);
1714-
1715-
const String kSkSlProgram = r'''
1716-
half4 main(vec2 fragCoord) {
1717-
return vec4(1.0, 0.0, 0.0, 1.0);
1718-
}
1719-
''';
1720-
1721-
final SkRuntimeEffect? effect = MakeRuntimeEffect(kSkSlProgram);
1722-
expect(effect, isNotNull);
1723-
1724-
const String kInvalidSkSlProgram = '';
1725-
1726-
// Invalid SkSL returns null.
1727-
final SkRuntimeEffect? invalidEffect = MakeRuntimeEffect(kInvalidSkSlProgram);
1728-
expect(invalidEffect, isNull);
1729-
1730-
final SkShader? shader = effect!.makeShader(<double>[]);
1731-
expect(shader, isNotNull);
1732-
1733-
// mismatched uniforms returns null.
1734-
final SkShader? invalidShader = effect.makeShader(<double>[1]);
1735-
1736-
expect(invalidShader, isNull);
1737-
1738-
const String kSkSlProgramWithUniforms = r'''
1739-
uniform vec4 u_color;
1740-
1741-
half4 main(vec2 fragCoord) {
1742-
return u_color;
1743-
}
1744-
''';
1745-
1746-
final SkShader? shaderWithUniform = MakeRuntimeEffect(kSkSlProgramWithUniforms)
1747-
!.makeShader(<double>[1.0, 0.0, 0.0, 1.0]);
1748-
1749-
expect(shaderWithUniform, isNotNull);
1750-
// TODO(hterkelsen): https://github.com/flutter/flutter/issues/115327
1751-
}, skip: true);
17521751
}

lib/web_ui/test/canvaskit/fragment_program_test.dart

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -186,27 +186,29 @@ void testMain() {
186186
});
187187

188188
test('FragmentProgram can be created from JSON IPLR bundle', () async {
189-
final Uint8List data = utf8.encode(kJsonIPLR) as Uint8List;
190-
final CkFragmentProgram program = await CkFragmentProgram.fromBytes('test', data);
189+
// TODO(hterkelsen): Remove this check when local CanvasKit is default.
190+
if (isRuntimeEffectAvailable) {
191+
final Uint8List data = utf8.encode(kJsonIPLR) as Uint8List;
192+
final CkFragmentProgram program = await CkFragmentProgram.fromBytes('test', data);
191193

192-
expect(program.effect, isNotNull);
193-
expect(program.floatCount, 17);
194-
expect(program.textureCount, 0);
195-
expect(program.uniforms, hasLength(17));
196-
expect(program.name, 'test');
194+
expect(program.effect, isNotNull);
195+
expect(program.floatCount, 17);
196+
expect(program.textureCount, 0);
197+
expect(program.uniforms, hasLength(17));
198+
expect(program.name, 'test');
197199

198-
final ui.FragmentShader shader = program.fragmentShader();
200+
final ui.FragmentShader shader = program.fragmentShader();
199201

200-
shader.setFloat(0, 4);
201-
shader.dispose();
202+
shader.setFloat(0, 4);
203+
shader.dispose();
202204

203-
expect(shader.debugDisposed, true);
205+
expect(shader.debugDisposed, true);
204206

205-
final ui.FragmentShader shader2 = program.fragmentShader();
207+
final ui.FragmentShader shader2 = program.fragmentShader();
206208

207-
shader.setFloat(0, 5);
208-
shader2.dispose();
209-
expect(shader2.debugDisposed, true);
210-
// TODO(hterkelsen): https://github.com/flutter/flutter/issues/115327
211-
}, skip: true);
209+
shader.setFloat(0, 5);
210+
shader2.dispose();
211+
expect(shader2.debugDisposed, true);
212+
}
213+
});
212214
}

0 commit comments

Comments
 (0)