// 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, 'is a List'); 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); }); }