|  | // Copyright 2013 The Flutter Authors. 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:typed_data'; | 
|  | import 'dart:ui'; | 
|  |  | 
|  | import 'package:test/test.dart'; | 
|  |  | 
|  | void main() { | 
|  | test('window.sendPlatformMessage preserves callback zone', () { | 
|  | runZoned(() { | 
|  | final Zone innerZone = Zone.current; | 
|  | PlatformDispatcher.instance.sendPlatformMessage('test', ByteData.view(Uint8List(0).buffer), expectAsync1((ByteData? data) { | 
|  | final Zone runZone = Zone.current; | 
|  | expect(runZone, isNotNull); | 
|  | expect(runZone, same(innerZone)); | 
|  | })); | 
|  | }); | 
|  | }); | 
|  |  | 
|  | test('FrameTiming.toString has the correct format', () { | 
|  | final FrameTiming timing = FrameTiming( | 
|  | vsyncStart: 500, | 
|  | buildStart: 1000, | 
|  | buildFinish: 8000, | 
|  | rasterStart: 9000, | 
|  | rasterFinish: 19500, | 
|  | rasterFinishWallTime: 19501, | 
|  | frameNumber: 23, | 
|  | ); | 
|  | expect(timing.toString(), | 
|  | 'FrameTiming(buildDuration: 7.0ms, ' | 
|  | 'rasterDuration: 10.5ms, ' | 
|  | 'vsyncOverhead: 0.5ms, ' | 
|  | 'totalSpan: 19.0ms, ' | 
|  | 'layerCacheCount: 0, ' | 
|  | 'layerCacheBytes: 0, ' | 
|  | 'pictureCacheCount: 0, ' | 
|  | 'pictureCacheBytes: 0, ' | 
|  | 'frameNumber: 23)'); | 
|  | }); | 
|  |  | 
|  | test('FrameTiming.toString with cache statistics has the correct format', () { | 
|  | final FrameTiming timing = FrameTiming( | 
|  | vsyncStart: 500, | 
|  | buildStart: 1000, | 
|  | buildFinish: 8000, | 
|  | rasterStart: 9000, | 
|  | rasterFinish: 19500, | 
|  | rasterFinishWallTime: 19501, | 
|  | layerCacheCount: 5, | 
|  | layerCacheBytes: 200000, | 
|  | pictureCacheCount: 3, | 
|  | pictureCacheBytes: 300000, | 
|  | frameNumber: 29, | 
|  | ); | 
|  | expect(timing.toString(), | 
|  | 'FrameTiming(buildDuration: 7.0ms, ' | 
|  | 'rasterDuration: 10.5ms, ' | 
|  | 'vsyncOverhead: 0.5ms, ' | 
|  | 'totalSpan: 19.0ms, ' | 
|  | 'layerCacheCount: 5, ' | 
|  | 'layerCacheBytes: 200000, ' | 
|  | 'pictureCacheCount: 3, ' | 
|  | 'pictureCacheBytes: 300000, ' | 
|  | 'frameNumber: 29)'); | 
|  | }); | 
|  |  | 
|  | test('computePlatformResolvedLocale basic', () { | 
|  | final List<Locale> supportedLocales = <Locale>[ | 
|  | const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN'), | 
|  | const Locale.fromSubtags(languageCode: 'fr', countryCode: 'FR'), | 
|  | const Locale.fromSubtags(languageCode: 'en', countryCode: 'US'), | 
|  | const Locale.fromSubtags(languageCode: 'en'), | 
|  | ]; | 
|  | // The default implementation returns null due to lack of a real platform. | 
|  | final Locale? result = PlatformDispatcher.instance.computePlatformResolvedLocale(supportedLocales); | 
|  | expect(result, null); | 
|  | }); | 
|  |  | 
|  | test('Display is configured for the implicitView', () { | 
|  | final FlutterView implicitView = PlatformDispatcher.instance.implicitView!; | 
|  | final Display display = implicitView.display; | 
|  |  | 
|  | expect(display.id, 0); | 
|  | expect(display.devicePixelRatio, implicitView.devicePixelRatio); | 
|  | expect(display.refreshRate, 60); | 
|  | expect(display.size, implicitView.physicalSize); | 
|  | }); | 
|  |  | 
|  | test('FlutterView.toString contains the viewId', () { | 
|  | final FlutterView flutterView = PlatformDispatcher.instance.implicitView!; | 
|  | expect(flutterView.viewId, 0); | 
|  | expect(flutterView.toString(), 'FlutterView(id: 0)'); | 
|  | }); | 
|  |  | 
|  | test('scaleFontSize is the identity function by default when textScaleFactor = 1', () { | 
|  | expect(PlatformDispatcher.instance.scaleFontSize(0), 0.0); | 
|  | expect(PlatformDispatcher.instance.scaleFontSize(1), 1.0); | 
|  | expect(PlatformDispatcher.instance.scaleFontSize(2), 2.0); | 
|  | expect(PlatformDispatcher.instance.scaleFontSize(3), 3.0); | 
|  | expect(PlatformDispatcher.instance.scaleFontSize(3.4), 3.4); | 
|  | }); | 
|  | } |