- Add VariableSpec class with magnitude field validation - Add Formula class supporting multiple input/output variables - Support d4rt_code as string or object with code field - Add comprehensive tests for parsing and serialization - Fix broken test import in pruebas_d4rt_test.dart Follows README.md format requirements exactly
80 lines
2.7 KiB
Dart
80 lines
2.7 KiB
Dart
// 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}.');
|
|
}
|
|
});
|
|
}
|