mirror of
https://github.com/encounter/engine.git
synced 2026-07-10 03:18:43 -07:00
f7e73b6236
This removes TextRange from the framework and moves it to the engine, in preparation for using it to return text ranges from the text extent APIs, like Paragraph.getWordBoundary instead of a List<int>. Also added new tests for TextRange.
83 lines
3.8 KiB
Dart
83 lines
3.8 KiB
Dart
// Copyright 2019 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: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('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'));
|
|
});
|
|
});
|
|
}
|