|  | // 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'; // ignore: deprecated_member_use_from_same_package | 
|  |  | 
|  | import 'utils.dart'; | 
|  |  | 
|  | main() { | 
|  | test('InnerHTML', () { | 
|  | Element element = new Element.tag('div'); | 
|  | element.id = 'test'; | 
|  | element.innerHtml = 'Hello World'; | 
|  | document.body!.append(element); | 
|  |  | 
|  | element = document.querySelector('#test')!; | 
|  | expect(element.innerHtml, 'Hello World'); | 
|  | element.remove(); | 
|  | }); | 
|  | test('HTMLTable', () { | 
|  | TableElement table = new Element.tag('table') as TableElement; | 
|  |  | 
|  | TableRowElement row = new Element.tag('tr') as TableRowElement; | 
|  | table.append(row); | 
|  |  | 
|  | row.append(new Element.tag('td')); | 
|  | row.append(new Element.tag('td')); | 
|  |  | 
|  | expect(row.cells.length, 2); | 
|  |  | 
|  | TableRowElement headerRow = table.rows[0]; | 
|  | expect(headerRow.cells.length, 2); | 
|  | }); | 
|  | test('dataset', () { | 
|  | Element div = new Element.tag('div'); | 
|  |  | 
|  | expect(div.dataset.isEmpty, isTrue); | 
|  | expect(div.dataset['foo'], isNull); | 
|  | expect(div.dataset.isEmpty, isTrue); | 
|  |  | 
|  | div.dataset['foo'] = 'foo-value'; | 
|  | expect(div.dataset['foo'], 'foo-value'); | 
|  | expect(div.dataset.isEmpty, isFalse); | 
|  |  | 
|  | expect(div.dataset.containsValue('foo-value'), isTrue); | 
|  | expect(div.dataset.containsValue('bar-value'), isFalse); | 
|  | expect(div.dataset.containsKey('foo'), isTrue); | 
|  | expect(div.dataset.containsKey('bar'), isFalse); | 
|  |  | 
|  | bool hasBeenInvoked; | 
|  | String f() { | 
|  | hasBeenInvoked = true; | 
|  | return 'bar-value'; | 
|  | } | 
|  |  | 
|  | hasBeenInvoked = false; | 
|  | expect(div.dataset.putIfAbsent('bar', f), 'bar-value'); | 
|  | expect(hasBeenInvoked, isTrue); | 
|  |  | 
|  | hasBeenInvoked = false; | 
|  | expect(div.dataset.putIfAbsent('bar', f), 'bar-value'); | 
|  | expect(hasBeenInvoked, isFalse); | 
|  |  | 
|  | final keys = <String>[]; | 
|  | final values = <String>[]; | 
|  | div.dataset.forEach((String key, String value) { | 
|  | keys.add(key); | 
|  | values.add(value); | 
|  | }); | 
|  | expect(keys, unorderedEquals(['foo', 'bar'])); | 
|  | expect(values, unorderedEquals(['foo-value', 'bar-value'])); | 
|  |  | 
|  | expect(new List<String>.from(div.dataset.keys), | 
|  | unorderedEquals(['foo', 'bar'])); | 
|  | expect(new List<String>.from(div.dataset.values), | 
|  | unorderedEquals(['foo-value', 'bar-value'])); | 
|  |  | 
|  | expect(div.dataset.length, 2); | 
|  | expect(div.dataset.isEmpty, isFalse); | 
|  |  | 
|  | expect(div.dataset.remove('qux'), isNull); | 
|  | expect(div.dataset.length, 2); | 
|  | expect(div.dataset.isEmpty, isFalse); | 
|  |  | 
|  | expect(div.dataset.remove('foo'), 'foo-value'); | 
|  | expect(div.dataset.length, 1); | 
|  | expect(div.dataset.isEmpty, isFalse); | 
|  |  | 
|  | div.dataset.clear(); | 
|  | expect(div.dataset.length, 0); | 
|  | expect(div.dataset.isEmpty, isTrue); | 
|  |  | 
|  | Element otherDiv = new Element.html( | 
|  | '<div id="dataDiv" data-my-message="Hello World"></div>', | 
|  | treeSanitizer: new NullTreeSanitizer()); | 
|  | expect(otherDiv.dataset.containsKey('myMessage'), isTrue); | 
|  |  | 
|  | Element anotherDiv = new Element.html( | 
|  | '<div id="dataDiv" data-eggs="bacon"></div>', | 
|  | treeSanitizer: new NullTreeSanitizer()); | 
|  | expect(anotherDiv.dataset.containsKey('eggs'), isTrue); | 
|  | }); | 
|  | } |