blob: 41d50a9d04dec907537c4d0447e54f7ac8eb0bc7 [file] [log] [blame]
// 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.
// @dart = 2.9
// 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/minitest.dart';
@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'));
});
}