blob: 6124e5746d5ab163b1ab470a0b89e8da23780c44 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:typed_data';
import 'dart:ui';
import 'package:litetest/litetest.dart';
import 'canvas_test.dart' show createImage, testCanvas;
void main() {
bool assertsEnabled = false;
assert(() {
assertsEnabled = true;
return true;
}());
test('Construct an ImageShader', () async {
final Image image = await createImage(50, 50);
final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16));
final Paint paint = Paint()..shader = shader;
const Rect rect = Rect.fromLTRB(0, 0, 100, 100);
testCanvas((Canvas canvas) => canvas.drawRect(rect, paint));
if (assertsEnabled) {
expect(shader.debugDisposed, false);
}
shader.dispose();
if (assertsEnabled) {
expect(shader.debugDisposed, true);
}
image.dispose();
});
test('ImageShader with disposed image', () async {
final Image image = await createImage(50, 50);
image.dispose();
if (assertsEnabled) {
expectAssertion(() => ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)));
} else {
throwsException(() => ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)));
}
});
test('Disposed image shader in a paint', () async {
final Image image = await createImage(50, 50);
final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16));
shader.dispose();
if (assertsEnabled) {
expectAssertion(() => Paint()..shader = shader);
return;
}
final Paint paint = Paint()..shader = shader;
const Rect rect = Rect.fromLTRB(0, 0, 100, 100);
testCanvas((Canvas canvas) => canvas.drawRect(rect, paint));
image.dispose();
});
test('Construct an ImageShader - GPU image', () async {
final PictureRecorder recorder = PictureRecorder();
final Canvas canvas = Canvas(recorder);
canvas.drawPaint(Paint()..color = const Color(0xFFABCDEF));
final Picture picture = recorder.endRecording();
final Image image = picture.toImageSync(50, 50);
picture.dispose();
final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16));
final Paint paint = Paint()..shader=shader;
const Rect rect = Rect.fromLTRB(0, 0, 100, 100);
testCanvas((Canvas canvas) => canvas.drawRect(rect, paint));
if (assertsEnabled) {
expect(shader.debugDisposed, false);
}
shader.dispose();
if (assertsEnabled) {
expect(shader.debugDisposed, true);
}
image.dispose();
});
}