mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Add copyright headers in a few files where they were missing. Trim trailing blank comment line where present, for consistency with other engine code. Use the standard libtxt copyright header in one file where it differed (extra (C) and comma compared to other files in libtxt). This also amends tools/const_finder/test/const_finder_test.dart to look for a const an additional four lines down to account for the copyright header added to the test fixture.
168 lines
8.5 KiB
Dart
168 lines
8.5 KiB
Dart
// 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.
|
|
|
|
// @dart = 2.6
|
|
import 'dart:convert';
|
|
import 'dart:typed_data';
|
|
import 'dart:ui';
|
|
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
group('FontWeight.lerp', () {
|
|
test('works with non-null values', () {
|
|
expect(FontWeight.lerp(FontWeight.w400, FontWeight.w600, .5), equals(FontWeight.w500));
|
|
});
|
|
|
|
test('returns null if a and b are null', () {
|
|
expect(FontWeight.lerp(null, null, 0), isNull);
|
|
});
|
|
|
|
test('returns FontWeight.w400 if a is null', () {
|
|
expect(FontWeight.lerp(null, FontWeight.w400, 0), equals(FontWeight.w400));
|
|
});
|
|
|
|
test('returns FontWeight.w400 if b is null', () {
|
|
expect(FontWeight.lerp(FontWeight.w400, null, 1), equals(FontWeight.w400));
|
|
});
|
|
});
|
|
|
|
group('ParagraphStyle', () {
|
|
final ParagraphStyle ps0 = ParagraphStyle(textDirection: TextDirection.ltr, fontSize: 14.0);
|
|
final ParagraphStyle ps1 = ParagraphStyle(textDirection: TextDirection.rtl, fontSize: 14.0);
|
|
final ParagraphStyle ps2 = ParagraphStyle(textAlign: TextAlign.center, fontWeight: FontWeight.w800, fontSize: 10.0, height: 100.0);
|
|
final ParagraphStyle ps3 = ParagraphStyle(fontWeight: FontWeight.w700, fontSize: 12.0, height: 123.0);
|
|
|
|
test('toString works', () {
|
|
expect(ps0.toString(), equals('ParagraphStyle(textAlign: unspecified, textDirection: TextDirection.ltr, fontWeight: unspecified, fontStyle: unspecified, maxLines: unspecified, textHeightBehavior: unspecified, fontFamily: unspecified, fontSize: 14.0, height: unspecified, ellipsis: unspecified, locale: unspecified)'));
|
|
expect(ps1.toString(), equals('ParagraphStyle(textAlign: unspecified, textDirection: TextDirection.rtl, fontWeight: unspecified, fontStyle: unspecified, maxLines: unspecified, textHeightBehavior: unspecified, fontFamily: unspecified, fontSize: 14.0, height: unspecified, ellipsis: unspecified, locale: unspecified)'));
|
|
expect(ps2.toString(), equals('ParagraphStyle(textAlign: TextAlign.center, textDirection: unspecified, fontWeight: FontWeight.w800, fontStyle: unspecified, maxLines: unspecified, textHeightBehavior: unspecified, fontFamily: unspecified, fontSize: 10.0, height: 100.0x, ellipsis: unspecified, locale: unspecified)'));
|
|
expect(ps3.toString(), equals('ParagraphStyle(textAlign: unspecified, textDirection: unspecified, fontWeight: FontWeight.w700, fontStyle: unspecified, maxLines: unspecified, textHeightBehavior: unspecified, fontFamily: unspecified, fontSize: 12.0, height: 123.0x, ellipsis: unspecified, locale: unspecified)'));
|
|
});
|
|
});
|
|
|
|
group('TextHeightBehavior', () {
|
|
const TextHeightBehavior behavior0 = TextHeightBehavior();
|
|
const TextHeightBehavior behavior1 = TextHeightBehavior(
|
|
applyHeightToFirstAscent: false,
|
|
applyHeightToLastDescent: false
|
|
);
|
|
const TextHeightBehavior behavior2 = TextHeightBehavior(
|
|
applyHeightToFirstAscent: false,
|
|
);
|
|
const TextHeightBehavior behavior3 = TextHeightBehavior(
|
|
applyHeightToLastDescent: false
|
|
);
|
|
|
|
test('default constructor works', () {
|
|
expect(behavior0.applyHeightToFirstAscent, equals(true));
|
|
expect(behavior0.applyHeightToLastDescent, equals(true));
|
|
|
|
expect(behavior1.applyHeightToFirstAscent, equals(false));
|
|
expect(behavior1.applyHeightToLastDescent, equals(false));
|
|
|
|
expect(behavior2.applyHeightToFirstAscent, equals(false));
|
|
expect(behavior2.applyHeightToLastDescent, equals(true));
|
|
|
|
expect(behavior3.applyHeightToFirstAscent, equals(true));
|
|
expect(behavior3.applyHeightToLastDescent, equals(false));
|
|
});
|
|
|
|
test('encode works', () {
|
|
expect(behavior0.encode(), equals(0));
|
|
expect(behavior1.encode(), equals(3));
|
|
expect(behavior2.encode(), equals(1));
|
|
expect(behavior3.encode(), equals(2));
|
|
});
|
|
|
|
test('decode works', () {
|
|
expect(const TextHeightBehavior.fromEncoded(0), equals(behavior0));
|
|
expect(const TextHeightBehavior.fromEncoded(3), equals(behavior1));
|
|
expect(const TextHeightBehavior.fromEncoded(1), equals(behavior2));
|
|
expect(const TextHeightBehavior.fromEncoded(2), equals(behavior3));
|
|
});
|
|
|
|
test('toString works', () {
|
|
expect(behavior0.toString(), equals('TextHeightBehavior(applyHeightToFirstAscent: true, applyHeightToLastDescent: true)'));
|
|
expect(behavior1.toString(), equals('TextHeightBehavior(applyHeightToFirstAscent: false, applyHeightToLastDescent: false)'));
|
|
expect(behavior2.toString(), equals('TextHeightBehavior(applyHeightToFirstAscent: false, applyHeightToLastDescent: true)'));
|
|
expect(behavior3.toString(), equals('TextHeightBehavior(applyHeightToFirstAscent: true, applyHeightToLastDescent: false)'));
|
|
});
|
|
});
|
|
|
|
group('TextRange', () {
|
|
test('empty ranges are correct', () {
|
|
const TextRange range = TextRange(start: -1, end: -1);
|
|
expect(range, equals(const TextRange.collapsed(-1)));
|
|
expect(range, equals(TextRange.empty));
|
|
});
|
|
test('isValid works', () {
|
|
expect(TextRange.empty.isValid, isFalse);
|
|
expect(const TextRange(start: 0, end: 0).isValid, isTrue);
|
|
expect(const TextRange(start: 0, end: 10).isValid, isTrue);
|
|
expect(const TextRange(start: 10, end: 10).isValid, isTrue);
|
|
expect(const TextRange(start: -1, end: 10).isValid, isFalse);
|
|
expect(const TextRange(start: 10, end: 0).isValid, isTrue);
|
|
expect(const TextRange(start: 10, end: -1).isValid, isFalse);
|
|
});
|
|
test('isCollapsed works', () {
|
|
expect(TextRange.empty.isCollapsed, isTrue);
|
|
expect(const TextRange(start: 0, end: 0).isCollapsed, isTrue);
|
|
expect(const TextRange(start: 0, end: 10).isCollapsed, isFalse);
|
|
expect(const TextRange(start: 10, end: 10).isCollapsed, isTrue);
|
|
expect(const TextRange(start: -1, end: 10).isCollapsed, isFalse);
|
|
expect(const TextRange(start: 10, end: 0).isCollapsed, isFalse);
|
|
expect(const TextRange(start: 10, end: -1).isCollapsed, isFalse);
|
|
});
|
|
test('isNormalized works', () {
|
|
expect(TextRange.empty.isNormalized, isTrue);
|
|
expect(const TextRange(start: 0, end: 0).isNormalized, isTrue);
|
|
expect(const TextRange(start: 0, end: 10).isNormalized, isTrue);
|
|
expect(const TextRange(start: 10, end: 10).isNormalized, isTrue);
|
|
expect(const TextRange(start: -1, end: 10).isNormalized, isTrue);
|
|
expect(const TextRange(start: 10, end: 0).isNormalized, isFalse);
|
|
expect(const TextRange(start: 10, end: -1).isNormalized, isFalse);
|
|
});
|
|
test('textBefore works', () {
|
|
expect(const TextRange(start: 0, end: 0).textBefore('hello'), isEmpty);
|
|
expect(const TextRange(start: 1, end: 1).textBefore('hello'), equals('h'));
|
|
expect(const TextRange(start: 1, end: 2).textBefore('hello'), equals('h'));
|
|
expect(const TextRange(start: 5, end: 5).textBefore('hello'), equals('hello'));
|
|
expect(const TextRange(start: 0, end: 5).textBefore('hello'), isEmpty);
|
|
});
|
|
test('textAfter works', () {
|
|
expect(const TextRange(start: 0, end: 0).textAfter('hello'), equals('hello'));
|
|
expect(const TextRange(start: 1, end: 1).textAfter('hello'), equals('ello'));
|
|
expect(const TextRange(start: 1, end: 2).textAfter('hello'), equals('llo'));
|
|
expect(const TextRange(start: 5, end: 5).textAfter('hello'), isEmpty);
|
|
expect(const TextRange(start: 0, end: 5).textAfter('hello'), isEmpty);
|
|
});
|
|
test('textInside works', () {
|
|
expect(const TextRange(start: 0, end: 0).textInside('hello'), isEmpty);
|
|
expect(const TextRange(start: 1, end: 1).textInside('hello'), isEmpty);
|
|
expect(const TextRange(start: 1, end: 2).textInside('hello'), equals('e'));
|
|
expect(const TextRange(start: 5, end: 5).textInside('hello'), isEmpty);
|
|
expect(const TextRange(start: 0, end: 5).textInside('hello'), equals('hello'));
|
|
});
|
|
});
|
|
|
|
group('loadFontFromList', () {
|
|
test('will send platform message after font is loaded', () async {
|
|
final PlatformMessageCallback oldHandler = window.onPlatformMessage;
|
|
String actualName;
|
|
String message;
|
|
window.onPlatformMessage = (String name, ByteData data, PlatformMessageResponseCallback callback) {
|
|
actualName = name;
|
|
final Uint8List list = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
|
|
message = utf8.decode(list);
|
|
};
|
|
final Uint8List fontData = Uint8List(0);
|
|
await loadFontFromList(fontData, fontFamily: 'fake');
|
|
window.onPlatformMessage = oldHandler;
|
|
expect(actualName, 'flutter/system');
|
|
expect(message, '{"type":"fontsChange"}');
|
|
});
|
|
});
|
|
}
|