text_painter_test.dart 2.28 KB
Newer Older
1 2 3 4
// Copyright 2017 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.

5
import 'dart:io' as io;
6 7 8
import 'dart:ui' as ui;

import 'package:flutter/painting.dart';
9 10
import 'package:flutter_test/flutter_test.dart';

11
void main() {
12
  test('TextPainter caret test', () {
13
    final TextPainter painter = new TextPainter();
14 15 16 17 18

    String text = 'A';
    painter.text = new TextSpan(text: text);
    painter.layout();

19
    Offset caretOffset = painter.getOffsetForCaret(const ui.TextPosition(offset: 0), ui.Rect.zero);
20 21 22 23 24 25 26 27 28 29
    expect(caretOffset.dx, 0);
    caretOffset = painter.getOffsetForCaret(new ui.TextPosition(offset: text.length), ui.Rect.zero);
    expect(caretOffset.dx, painter.width);

    // Check that getOffsetForCaret handles a character that is encoded as a surrogate pair.
    text = 'A\u{1F600}';
    painter.text = new TextSpan(text: text);
    painter.layout();
    caretOffset = painter.getOffsetForCaret(new ui.TextPosition(offset: text.length), ui.Rect.zero);
    expect(caretOffset.dx, painter.width);
30
  }, skip: io.Platform.isMacOS); // TODO(goderbauer): Disabled because of https://github.com/flutter/flutter/issues/4273
31

32
  test('TextPainter error test', () {
33
    final TextPainter painter = new TextPainter();
34
    expect(() { painter.paint(null, Offset.zero); }, throwsFlutterError);
35
  });
36 37 38

  test('TextPainter size test', () {
    final TextPainter painter = new TextPainter(
39
      text: const TextSpan(
40
        text: 'X',
41
        style: const TextStyle(
42 43 44 45 46 47 48 49 50
          inherit: false,
          fontFamily: 'Ahem',
          fontSize: 123.0,
        ),
      ),
    );
    painter.layout();
    expect(painter.size, const Size(123.0, 123.0));
  });
51 52 53 54 55 56 57 58 59 60 61 62 63 64

  test('TextPainter default text height is 14 pixels', () {
    final TextPainter painter = new TextPainter(text: const TextSpan(text: 'x'));
    painter.layout();
    expect(painter.preferredLineHeight, 14.0);
    expect(painter.size, const Size(14.0, 14.0));
  });

  test('TextPainter sets paragraph size from root', () {
    final TextPainter painter = new TextPainter(text: const TextSpan(text: 'x', style: const TextStyle(fontSize: 100.0)));
    painter.layout();
    expect(painter.preferredLineHeight, 100.0);
    expect(painter.size, const Size(100.0, 100.0));
  });
65
}