| // 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. | |
| import 'dart:html'; | |
| import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package | |
| main() { | |
| var canvas; | |
| canvas = new Element.tag('canvas'); | |
| canvas.attributes['width'] = '100'; | |
| canvas.attributes['height'] = '100'; | |
| document.body!.append(canvas); | |
| var isCanvasRenderingContext = predicate( | |
| (x) => x is CanvasRenderingContext, | |
| 'is a CanvasRenderingContext', | |
| ); | |
| var isNotCanvasRenderingContext = predicate( | |
| (x) => x is! CanvasRenderingContext, | |
| 'is not a CanvasRenderingContext', | |
| ); | |
| var isCanvasRenderingContext2D = predicate( | |
| (x) => x is CanvasRenderingContext2D, | |
| 'is a CanvasRenderingContext2D', | |
| ); | |
| var isNotCanvasRenderingContext2D = predicate( | |
| (x) => x is! CanvasRenderingContext2D, | |
| 'is not a CanvasRenderingContext2D', | |
| ); | |
| var isElement = predicate((x) => x is Element, 'is an Element'); | |
| var isNotElement = predicate((x) => x is! Element, 'is not an Element'); | |
| var isCanvasElement = predicate( | |
| (x) => x is CanvasElement, | |
| 'is a CanvasElement', | |
| ); | |
| var isNotCanvasElement = predicate( | |
| (x) => x is! CanvasElement, | |
| 'is not a CanvasElement', | |
| ); | |
| var isImageData = predicate((x) => x is ImageData, 'is an ImageData'); | |
| var isNotImageData = predicate((x) => x is! ImageData, 'is not an ImageData'); | |
| //var isUint8ClampedArray = | |
| // predicate((x) => x is Uint8ClampedArray, 'is a Uint8ClampedArray'); | |
| var isIntList = predicate((x) => x is List<int>, 'is a List<int>'); | |
| test('Instanceof', () { | |
| expect(canvas, isNotCanvasRenderingContext); | |
| expect(canvas, isNotCanvasRenderingContext2D); | |
| expect(canvas, isElement); | |
| expect(canvas, isCanvasElement); | |
| expect(canvas, isNotImageData); | |
| // expect(canvas, isNot(isCanvasPixelArray)); | |
| var context = canvas.getContext('2d'); | |
| expect(context, isCanvasRenderingContext); | |
| expect(context, isCanvasRenderingContext2D); | |
| expect(context, isNotElement); | |
| expect(context, isNotCanvasElement); | |
| expect(context, isNotImageData); | |
| // expect(context, isNot(isCanvasPixelArray)); | |
| // FIXME(b/5286633): Interface injection type check workaround. | |
| var image = (context as CanvasRenderingContext2D).createImageData( | |
| canvas.width as dynamic, | |
| canvas.height as dynamic, | |
| ); | |
| expect(image, isNotCanvasRenderingContext); | |
| expect(image, isNotCanvasRenderingContext2D); | |
| expect(image, isNotElement); | |
| expect(image, isNotCanvasElement); | |
| expect(image, isImageData); | |
| // expect(image, isNot(isCanvasPixelArray)); | |
| // Include CanvasPixelArray since constructor and prototype are not | |
| // available until one is created. | |
| var bytes = image.data; | |
| expect(bytes, isNotCanvasRenderingContext); | |
| expect(bytes, isNotCanvasRenderingContext2D); | |
| expect(bytes, isNotElement); | |
| expect(bytes, isNotCanvasElement); | |
| expect(bytes, isNotImageData); | |
| expect(bytes, isIntList); | |
| // FIXME: Ensure this is an SpanElement when we next update | |
| // WebKit IDL. | |
| var span = new Element.tag('span'); | |
| expect(span, isElement); | |
| }); | |
| } |