| // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| library canvas_rendering_context_2d_test; | |
| import 'dart:html'; | |
| import 'dart:math'; | |
| import 'canvas_rendering_util.dart'; | |
| import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package | |
| main() { | |
| setUp(setupFunc); | |
| tearDown(tearDownFunc); | |
| final x = 20; | |
| final y = 20; | |
| test('without maxWidth', () { | |
| context.font = '40pt Garamond'; | |
| context.fillStyle = 'blue'; | |
| // Draw a blue box. | |
| context.fillText('█', x, y); | |
| var width = context.measureText('█').width.ceil(); | |
| checkPixel(readPixel(x, y), [0, 0, 255, 255]); | |
| checkPixel(readPixel(x + 10, y), [0, 0, 255, 255]); | |
| expectPixelUnfilled(x - 10, y); | |
| expectPixelFilled(x, y); | |
| expectPixelFilled(x + 10, y); | |
| // The box does not draw after `width` pixels. | |
| // Check -2 rather than -1 because this seems | |
| // to run into a rounding error on Mac bots. | |
| expectPixelFilled((x + width - 2).toInt(), y); | |
| expectPixelUnfilled((x + width + 1).toInt(), y); | |
| }); | |
| test('with maxWidth null', () { | |
| context.font = '40pt Garamond'; | |
| context.fillStyle = 'blue'; | |
| // Draw a blue box with null maxWidth. | |
| context.fillText('█', x, y, null); | |
| var width = context.measureText('█').width.ceil(); | |
| checkPixel(readPixel(x, y), [0, 0, 255, 255]); | |
| checkPixel(readPixel(x + 10, y), [0, 0, 255, 255]); | |
| expectPixelUnfilled(x - 10, y); | |
| expectPixelFilled(x, y); | |
| expectPixelFilled(x + 10, y); | |
| // The box does not draw after `width` pixels. | |
| // Check -2 rather than -1 because this seems | |
| // to run into a rounding error on Mac bots. | |
| expectPixelFilled((x + width - 2).toInt(), y); | |
| expectPixelUnfilled((x + width + 1).toInt(), y); | |
| }); | |
| test('with maxWidth defined', () { | |
| context.font = '40pt Garamond'; | |
| context.fillStyle = 'blue'; | |
| final maxWidth = 20; | |
| // Draw a blue box that's at most 20 pixels wide. | |
| context.fillText('█', x, y, maxWidth); | |
| checkPixel(readPixel(x, y), [0, 0, 255, 255]); | |
| checkPixel(readPixel(x + 10, y), [0, 0, 255, 255]); | |
| // The box does not draw after 20 pixels. | |
| expectPixelUnfilled(x - 10, y); | |
| expectPixelUnfilled(x + maxWidth + 1, y); | |
| expectPixelUnfilled(x + maxWidth + 20, y); | |
| expectPixelFilled(x, y); | |
| expectPixelFilled(x + 10, y); | |
| }); | |
| } |