blob: 3817f8025e9a5be46d6ae594445d9248927ec0ce [file] [log] [blame]
// Copyright 2014 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 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('Text widget parameter takes precedence over DefaultTextHeightBehavior', (WidgetTester tester) async {
const TextHeightBehavior behavior1 = TextHeightBehavior(
applyHeightToLastDescent: false,
applyHeightToFirstAscent: false,
);
const TextHeightBehavior behavior2 = TextHeightBehavior(
applyHeightToFirstAscent: false,
);
await tester.pumpWidget(
const DefaultTextHeightBehavior(
textHeightBehavior: behavior2,
child: Text(
'Hello',
textDirection: TextDirection.ltr,
textHeightBehavior: behavior1,
),
),
);
final RichText text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.textHeightBehavior, behavior1);
});
testWidgets('DefaultTextStyle.textHeightBehavior takes precedence over DefaultTextHeightBehavior ', (WidgetTester tester) async {
const TextHeightBehavior behavior1 = TextHeightBehavior(
applyHeightToLastDescent: false,
applyHeightToFirstAscent: false,
);
const TextHeightBehavior behavior2 = TextHeightBehavior(
applyHeightToFirstAscent: false,
);
await tester.pumpWidget(
const DefaultTextStyle(
style: TextStyle(),
textHeightBehavior: behavior1,
child: DefaultTextHeightBehavior(
textHeightBehavior: behavior2,
child: Text(
'Hello',
textDirection: TextDirection.ltr,
),
),
),
);
RichText text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.textHeightBehavior, behavior1);
await tester.pumpWidget(
const DefaultTextHeightBehavior(
textHeightBehavior: behavior2,
child: DefaultTextStyle(
style: TextStyle(),
textHeightBehavior: behavior1,
child: Text(
'Hello',
textDirection: TextDirection.ltr,
),
),
),
);
text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.textHeightBehavior, behavior1);
});
testWidgets('DefaultTextHeightBehavior changes propagate to Text', (WidgetTester tester) async {
const Text textWidget = Text('Hello', textDirection: TextDirection.ltr);
const TextHeightBehavior behavior1 = TextHeightBehavior(
applyHeightToLastDescent: false,
applyHeightToFirstAscent: false,
);
const TextHeightBehavior behavior2 = TextHeightBehavior(
applyHeightToLastDescent: false,
applyHeightToFirstAscent: false,
);
await tester.pumpWidget(const DefaultTextHeightBehavior(
textHeightBehavior: behavior1,
child: textWidget,
));
RichText text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.textHeightBehavior, behavior1);
await tester.pumpWidget(const DefaultTextHeightBehavior(
textHeightBehavior: behavior2,
child: textWidget,
));
text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.textHeightBehavior, behavior2);
});
testWidgets(
'DefaultTextHeightBehavior.of(context) returns null if no '
'DefaultTextHeightBehavior widget in tree',
(WidgetTester tester) async {
const Text textWidget = Text('Hello', textDirection: TextDirection.ltr);
TextHeightBehavior? textHeightBehavior;
await tester.pumpWidget(Builder(
builder: (BuildContext context) {
textHeightBehavior = DefaultTextHeightBehavior.of(context);
return textWidget;
},
));
expect(textHeightBehavior, isNull);
final RichText text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.textHeightBehavior, isNull);
},
);
}