| // 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:litetest/litetest.dart'; |
| |
| void main() { |
| test('window.sendPlatformMessage preserves callback zone', () { |
| runZoned(() { |
| final Zone innerZone = Zone.current; |
| window.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 = window.computePlatformResolvedLocale(supportedLocales); |
| expect(result, null); |
| }); |
| } |