| // 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 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); | |
| }); | |
| }); | |
| } |