| // Copyright (c) 2017, 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:async'; |
| import 'dart:html'; |
| |
| import 'package:expect/minitest.dart'; |
| |
| class Mock { |
| noSuchMethod(Invocation i) => document; |
| } |
| |
| @proxy |
| class MockBodyElement extends Mock implements BodyElement { |
| Node append(Node e) => e; |
| } |
| |
| @proxy |
| class MockHtmlDocument extends Mock implements HtmlDocument { |
| BodyElement get body => new MockBodyElement(); |
| } |
| |
| @proxy |
| class MockWindow extends Mock implements Window { |
| Stream<Event> get onBeforeUnload => new Stream.fromIterable([]); |
| |
| String name = "MOCK_NAME"; |
| } |
| |
| @proxy |
| class MockLocation extends Mock implements Location { |
| String href = "MOCK_HREF"; |
| } |
| |
| main() { |
| test('is', () { |
| var win = new MockWindow(); |
| expect(win is Window, isTrue); |
| }); |
| |
| test('getter', () { |
| var win = new MockWindow(); |
| expect(win.document, equals(document)); |
| }); |
| |
| test('override', () { |
| Window win = new MockWindow(); |
| expect(win.onBeforeUnload != null, isTrue); |
| expect(win.name, equals("MOCK_NAME")); |
| }); |
| |
| test('override', () { |
| var loc1 = new MockLocation(); |
| Location loc2 = loc1; |
| dynamic loc3 = loc1; |
| expect(loc1.href, equals("MOCK_HREF")); |
| loc1.href = "RESET"; |
| expect(loc2.href, equals("RESET")); |
| loc2.href = "RESET2"; |
| expect(loc3.href, equals("RESET2")); |
| }); |
| |
| test('method', () { |
| HtmlDocument doc = new MockHtmlDocument(); |
| expect(doc.body.append(null), equals(null)); |
| }); |
| } |