| // Copyright (c) 2023, 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. |
| |
| @TestOn('browser') |
| library; |
| |
| import 'dart:js_interop'; |
| |
| import 'package:test/test.dart'; |
| import 'package:web/web.dart'; |
| |
| void main() { |
| test('Basic method', () { |
| final div = document.createElement('div') as HTMLDivElement; |
| div.innerText = 'Hello World!'; |
| div.id = 'foo'; |
| document.body!.appendChild(div); |
| final found = document.getElementById('foo') as HTMLDivElement; |
| expect(found.innerText, equals('Hello World!')); |
| document.body!.removeChild(div); |
| expect(document.getElementById('foo'), equals(null)); |
| }); |
| |
| test('Objects inherit from JSObject', () { |
| final div = document.createElement('div') as HTMLDivElement; |
| div.innerText = 'Hello World!'; |
| div.id = 'foo'; |
| document.body!.append(div as JSObject); |
| final found = document.getElementById('foo') as HTMLDivElement; |
| expect(found.innerText, equals('Hello World!')); |
| document.body!.removeChild(div); |
| }); |
| |
| test('CSS properties work as expected.', () { |
| final div = document.createElement('div') as HTMLDivElement; |
| |
| // Single word property |
| div.style.color = 'blue'; |
| expect(div.style.color, equals('blue')); |
| expect(div.style.getPropertyValue('color'), equals('blue')); |
| div.style.setProperty('color', 'green'); |
| expect(div.style.color, equals('green')); |
| expect(div.style.getPropertyValue('color'), equals('green')); |
| |
| // Multi word property |
| div.style.textOverflow = 'clip'; |
| expect(div.style.textOverflow, equals('clip')); |
| expect(div.style.getPropertyValue('text-overflow'), equals('clip')); |
| div.style.setProperty('text-overflow', 'ellipsis'); |
| expect(div.style.textOverflow, equals('ellipsis')); |
| expect(div.style.getPropertyValue('text-overflow'), equals('ellipsis')); |
| }); |
| |
| test('External [] and []= operators work as expected.', () { |
| // [] |
| expect(window['document'], window.document); |
| expect(window.document['body'], window.document.body); |
| // []= |
| final select = HTMLSelectElement(); |
| final option = HTMLOptionElement(); |
| select[0] = option; |
| expect(select.item(0), option); |
| }); |
| |
| test('Constant values can be switched over.', () { |
| final request = XMLHttpRequest(); |
| switch (request.readyState) { |
| case XMLHttpRequest.UNSENT: |
| break; |
| case XMLHttpRequest.OPENED: |
| case XMLHttpRequest.HEADERS_RECEIVED: |
| case XMLHttpRequest.LOADING: |
| case XMLHttpRequest.DONE: |
| default: |
| throw Exception('Expected `readyState`: ${XMLHttpRequest.UNSENT}, but ' |
| 'got: ${request.readyState}.'); |
| } |
| }); |
| } |