// Copyright (c) 2013, 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. // Tests the functionality of js_util with HTML objects. @JS() library js_util_test; import 'dart:html'; import 'package:js/js.dart'; import 'package:js/js_util.dart' as js_util; import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package @JS() external void eval(String code); @JS('Node') external get JSNodeType; @JS('Element') external get JSElementType; @JS('Text') external get JSTextType; @JS('HTMLCanvasElement') external get JSHtmlCanvasElementType; @JS() class Foo { external Foo(); } main() { eval(r""" function Foo() {} """); test('hasProperty', () { var textElement = new Text('foo'); expect(js_util.hasProperty(textElement, 'data'), isTrue); }); test('getProperty', () { var textElement = new Text('foo'); expect(js_util.getProperty(textElement, 'data'), equals('foo')); }); test('setProperty', () { var textElement = new Text('foo'); js_util.setProperty(textElement, 'data', 'bar'); expect(textElement.text, equals('bar')); }); test('callMethod', () { var canvas = new CanvasElement(); expect( identical( canvas.getContext('2d'), js_util.callMethod(canvas, 'getContext', ['2d']), ), isTrue, ); }); test('instanceof', () { var canvas = new Element.tag('canvas'); expect(js_util.instanceof(canvas, JSNodeType), isTrue); expect(js_util.instanceof(canvas, JSTextType), isFalse); expect(js_util.instanceof(canvas, JSElementType), isTrue); expect(js_util.instanceof(canvas, JSHtmlCanvasElementType), isTrue); var div = new Element.tag('div'); expect(js_util.instanceof(div, JSNodeType), isTrue); expect(js_util.instanceof(div, JSTextType), isFalse); expect(js_util.instanceof(div, JSElementType), isTrue); expect(js_util.instanceof(div, JSHtmlCanvasElementType), isFalse); var text = new Text('foo'); expect(js_util.instanceof(text, JSNodeType), isTrue); expect(js_util.instanceof(text, JSTextType), isTrue); expect(js_util.instanceof(text, JSElementType), isFalse); var f = new Foo(); expect(js_util.instanceof(f, JSNodeType), isFalse); }); test('callConstructor', () { var textNode = js_util.callConstructor(JSTextType, ['foo']); expect(js_util.instanceof(textNode, JSTextType), isTrue); expect(textNode is Text, isTrue); expect(textNode.text, equals('foo')); }); }