blob: 159ef2d2b5330baa177e433aad4c7afbd23adab3 [file] [log] [blame]
// 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}.');
}
});
}