| // 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/minitest.dart'; |
| |
| main() { |
| var isElement = predicate((x) => x is Element, 'is an Element'); |
| var isDivElement = predicate((x) => x is DivElement, 'is a DivElement'); |
| var isAnchorElement = |
| predicate((x) => x is AnchorElement, 'is an AnchorElement'); |
| var isUnknownElement = |
| predicate((x) => x is UnknownElement, 'is UnknownElement'); |
| |
| var inscrutable; |
| |
| test('CreateElement', () { |
| // FIXME: nifty way crashes, do it boring way. |
| expect(new Element.tag('span'), isElement); |
| expect(new Element.tag('div'), isDivElement); |
| expect(new Element.tag('a'), isAnchorElement); |
| expect(new Element.tag('bad_name'), isUnknownElement); |
| }); |
| |
| group('document', () { |
| inscrutable = (x) => x; |
| |
| test('Document.query', () { |
| Document doc = new DomParser().parseFromString('''<ResultSet> |
| <Row>A</Row> |
| <Row>B</Row> |
| <Row>C</Row> |
| </ResultSet>''', 'text/xml'); |
| |
| var rs = doc.querySelector('ResultSet'); |
| expect(rs, isNotNull); |
| }); |
| |
| test('CreateElement', () { |
| // FIXME: nifty way crashes, do it boring way. |
| expect(new Element.tag('span'), isElement); |
| expect(new Element.tag('div'), isDivElement); |
| expect(new Element.tag('a'), isAnchorElement); |
| expect(new Element.tag('bad_name'), isUnknownElement); |
| }); |
| |
| test('adoptNode', () { |
| var div = new Element.html('<div><div id="foo">bar</div></div>'); |
| var doc = document.implementation!.createHtmlDocument(''); |
| expect(doc.adoptNode(div), div); |
| expect(div.ownerDocument, doc); |
| doc.body!.nodes.add(div); |
| expect(doc.querySelector('#foo')!.text, 'bar'); |
| }); |
| |
| test('importNode', () { |
| var div = new Element.html('<div><div id="foo">bar</div></div>'); |
| var doc = document.implementation!.createHtmlDocument(''); |
| var div2 = doc.importNode(div, true); |
| expect(div2, notEquals(div)); |
| expect(div2.ownerDocument, doc); |
| doc.body!.nodes.add(div2); |
| expect(doc.querySelector('#foo')!.text, 'bar'); |
| }); |
| |
| test('typeTest1', () { |
| inscrutable = inscrutable(inscrutable); |
| var doc1 = document; |
| expect(doc1 is HtmlDocument, true); |
| expect(inscrutable(doc1) is HtmlDocument, true); |
| var doc2 = document.implementation!.createHtmlDocument(''); |
| expect(doc2 is HtmlDocument, true); |
| expect(inscrutable(doc2) is HtmlDocument, true); |
| }); |
| |
| test('typeTest2', () { |
| inscrutable = inscrutable(inscrutable); |
| // XML document. |
| var doc3 = document.implementation!.createDocument(null, 'report', null); |
| expect(doc3 is HtmlDocument, false); |
| expect(inscrutable(doc3) is HtmlDocument, false); |
| }); |
| }); |
| } |