// 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. import 'dart:html'; import 'dart:indexed_db' show IdbFactory, KeyRange; import 'dart:typed_data' show Int32List; import 'dart:js'; import 'package:js/js_util.dart' as js_util; import 'package:expect/minitest.dart'; import 'js_test_util.dart'; main() { injectJs(); test('Date', () { context['o'] = new DateTime(1995, 12, 17); var dateType = context['Date']; expect(context.callMethod('isPropertyInstanceOf', ['o', dateType]), isTrue); context.deleteProperty('o'); }); skipIE9_test('window', () { context['o'] = window; var windowType = context['Window']; expect( context.callMethod('isPropertyInstanceOf', ['o', windowType]), isTrue); context.deleteProperty('o'); }); skipIE9_test('document', () { context['o'] = document; var documentType = context['Document']; expect(context.callMethod('isPropertyInstanceOf', ['o', documentType]), isTrue); context.deleteProperty('o'); }); skipIE9_test('Blob', () { var fileParts = ['hey!']; context['o'] = new Blob(fileParts, 'text/html'); var blobType = context['Blob']; expect(context.callMethod('isPropertyInstanceOf', ['o', blobType]), isTrue); context.deleteProperty('o'); }); test('unattached DivElement', () { context['o'] = new DivElement(); var divType = context['HTMLDivElement']; expect(context.callMethod('isPropertyInstanceOf', ['o', divType]), isTrue); context.deleteProperty('o'); }); test('Event', () { context['o'] = new CustomEvent('test'); var eventType = context['Event']; expect( context.callMethod('isPropertyInstanceOf', ['o', eventType]), isTrue); context.deleteProperty('o'); }); test('KeyRange', () { if (IdbFactory.supported) { context['o'] = new KeyRange.only(1); var keyRangeType = context['IDBKeyRange']; expect(context.callMethod('isPropertyInstanceOf', ['o', keyRangeType]), isTrue); context.deleteProperty('o'); } }); // this test fails in IE9 for very weird, but unknown, reasons // the expression context['ImageData'] fails if useHtmlConfiguration() // is called, or if the other tests in this file are enabled skipIE9_test('ImageData', () { var canvas = new CanvasElement(); var ctx = canvas.getContext('2d') as CanvasRenderingContext2D; context['o'] = ctx.createImageData(1, 1); var imageDataType = context['ImageData']; expect(context.callMethod('isPropertyInstanceOf', ['o', imageDataType]), isTrue); context.deleteProperty('o'); }); test('typed data: Int32List', () { if (Platform.supportsTypedData) { context['o'] = new Int32List.fromList([1, 2, 3, 4]); var listType = context['Int32Array']; // TODO(jacobr): make this test pass. Currently some type information // is lost when typed arrays are passed between JS and Dart. // expect(context.callMethod('isPropertyInstanceOf', ['o', listType]), // isTrue); context.deleteProperty('o'); } }); }