mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-07-15 03:04:25 +08:00
81 lines
3.1 KiB
Dart
81 lines
3.1 KiB
Dart
// Copyright 2016 The Chromium 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 'package:flutter_web/foundation.dart';
|
|
import 'package:flutter_web/material.dart';
|
|
import 'package:flutter_web_test/flutter_web_test.dart';
|
|
|
|
void main() {
|
|
test('Typography is defined for all target platforms', () {
|
|
for (TargetPlatform platform in TargetPlatform.values) {
|
|
final Typography typography = Typography(platform: platform);
|
|
expect(typography, isNotNull, reason: 'null typography for $platform');
|
|
expect(typography.black, isNotNull,
|
|
reason: 'null black typography for $platform');
|
|
expect(typography.white, isNotNull,
|
|
reason: 'null white typography for $platform');
|
|
}
|
|
});
|
|
|
|
test('Typography on Android, Fuchsia defaults to Roboto', () {
|
|
expect(Typography(platform: TargetPlatform.android).black.title.fontFamily,
|
|
'Roboto');
|
|
expect(Typography(platform: TargetPlatform.fuchsia).black.title.fontFamily,
|
|
'Roboto');
|
|
});
|
|
|
|
test('Typography on iOS defaults to the correct SF font family based on size',
|
|
() {
|
|
// Ref: https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/
|
|
final Matcher isDisplayFont = predicate((TextStyle s) {
|
|
return s.fontFamily == '.SF UI Display';
|
|
}, 'Uses SF Display font');
|
|
|
|
final Matcher isTextFont = predicate((TextStyle s) {
|
|
return s.fontFamily == '.SF UI Text';
|
|
}, 'Uses SF Text font');
|
|
|
|
final Typography typography = Typography(platform: TargetPlatform.iOS);
|
|
for (TextTheme textTheme in <TextTheme>[
|
|
typography.black,
|
|
typography.white
|
|
]) {
|
|
expect(textTheme.display4, isDisplayFont);
|
|
expect(textTheme.display3, isDisplayFont);
|
|
expect(textTheme.display2, isDisplayFont);
|
|
expect(textTheme.display1, isDisplayFont);
|
|
expect(textTheme.headline, isDisplayFont);
|
|
expect(textTheme.title, isDisplayFont);
|
|
expect(textTheme.subhead, isTextFont);
|
|
expect(textTheme.body2, isTextFont);
|
|
expect(textTheme.body1, isTextFont);
|
|
expect(textTheme.caption, isTextFont);
|
|
expect(textTheme.button, isTextFont);
|
|
expect(textTheme.subtitle, isTextFont);
|
|
expect(textTheme.overline, isTextFont);
|
|
}
|
|
});
|
|
|
|
testWidgets('Typography implements debugFillProperties',
|
|
(WidgetTester tester) async {
|
|
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
|
|
Typography(
|
|
platform: TargetPlatform.android,
|
|
black: Typography.blackCupertino,
|
|
white: Typography.whiteCupertino,
|
|
englishLike: Typography.englishLike2018,
|
|
dense: Typography.dense2018,
|
|
tall: Typography.tall2018,
|
|
).debugFillProperties(builder);
|
|
|
|
final List<String> nonDefaultPropertyNames = builder.properties
|
|
.where((DiagnosticsNode node) => !node.isFiltered(DiagnosticLevel.info))
|
|
.map((DiagnosticsNode node) => node.name)
|
|
.toList();
|
|
|
|
expect(nonDefaultPropertyNames,
|
|
<String>['black', 'white', 'englishLike', 'dense', 'tall']);
|
|
});
|
|
}
|