| Index: test/codegen/lib/html/history_test.dart
|
| diff --git a/test/codegen/lib/html/history_test.dart b/test/codegen/lib/html/history_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d801a72a76f6b64743a81f92014e95768aef9d32
|
| --- /dev/null
|
| +++ b/test/codegen/lib/html/history_test.dart
|
| @@ -0,0 +1,95 @@
|
| +library HistoryTest;
|
| +import 'package:unittest/unittest.dart';
|
| +import 'package:unittest/html_individual_config.dart';
|
| +import 'dart:html';
|
| +import 'dart:async';
|
| +
|
| +main() {
|
| + useHtmlIndividualConfiguration();
|
| +
|
| + group('supported_state', () {
|
| + test('supportsState', () {
|
| + expect(History.supportsState, true);
|
| + });
|
| + });
|
| +
|
| + group('supported_HashChangeEvent', () {
|
| + test('supported', () {
|
| + expect(HashChangeEvent.supported, true);
|
| + });
|
| + });
|
| +
|
| + var expectation = History.supportsState ? returnsNormally : throws;
|
| +
|
| + group('history', () {
|
| + test('pushState', () {
|
| + expect(() {
|
| + window.history.pushState(null, document.title, '?dummy');
|
| + var length = window.history.length;
|
| +
|
| + window.history.pushState(null, document.title, '?foo=bar');
|
| +
|
| + expect(window.location.href.endsWith('foo=bar'), isTrue);
|
| +
|
| + }, expectation);
|
| + });
|
| +
|
| + test('pushState with data', () {
|
| + expect(() {
|
| + window.history.pushState({'one' : 1}, document.title, '?dummy');
|
| + expect(window.history.state, equals({'one' : 1}));
|
| + window.history.pushState(null, document.title, '?foo=bar');
|
| +
|
| + expect(window.location.href.endsWith('foo=bar'), isTrue);
|
| +
|
| + }, expectation);
|
| + });
|
| +
|
| + test('back', () {
|
| + expect(() {
|
| + window.history.pushState(null, document.title, '?dummy1');
|
| + window.history.pushState(null, document.title, '?dummy2');
|
| + var length = window.history.length;
|
| +
|
| + expect(window.location.href.endsWith('dummy2'), isTrue);
|
| +
|
| + // Need to wait a frame or two to let the pushState events occur.
|
| + new Timer(const Duration(milliseconds: 100), expectAsync(() {
|
| + window.onPopState.first.then(expectAsync((_){
|
| + expect(window.history.length, length);
|
| + expect(window.location.href.endsWith('dummy1'), isTrue);
|
| + }));
|
| +
|
| + window.history.back();
|
| + }));
|
| + }, expectation);
|
| + });
|
| +
|
| + test('replaceState', () {
|
| + expect(() {
|
| + var length = window.history.length;
|
| +
|
| + window.history.replaceState(null, document.title, '?foo=baz');
|
| + expect(window.history.length, length);
|
| + expect(window.location.href.endsWith('foo=baz'), isTrue);
|
| + }, expectation);
|
| + });
|
| +
|
| + test('popstatevent', () {
|
| + expect(() {
|
| + var event = new Event.eventType('PopStateEvent', 'popstate');
|
| + expect(event is PopStateEvent, true);
|
| + }, expectation);
|
| + });
|
| +
|
| + test('hashchangeevent', () {
|
| + var expectation = HashChangeEvent.supported ? returnsNormally : throws;
|
| + expect(() {
|
| + var event = new HashChangeEvent('change', oldUrl:'old', newUrl: 'new');
|
| + expect(event is HashChangeEvent, true);
|
| + expect(event.oldUrl, 'old');
|
| + expect(event.newUrl, 'new');
|
| + }, expectation);
|
| + });
|
| + });
|
| +}
|
|
|