Unverified Commit 78ff1226 authored by Polina Cherkasova's avatar Polina Cherkasova Committed by GitHub

Test cover more tests with leak tracking. (#133828)

parent 0f3bd90d
...@@ -9,6 +9,7 @@ library; ...@@ -9,6 +9,7 @@ library;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
test('CardTheme copyWith, ==, hashCode basics', () { test('CardTheme copyWith, ==, hashCode basics', () {
...@@ -22,7 +23,7 @@ void main() { ...@@ -22,7 +23,7 @@ void main() {
expect(identical(CardTheme.lerp(theme, theme, 0.5), theme), true); expect(identical(CardTheme.lerp(theme, theme, 0.5), theme), true);
}); });
testWidgets('Material3 - Passing no CardTheme returns defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material3 - Passing no CardTheme returns defaults', (WidgetTester tester) async {
final ThemeData theme = ThemeData(useMaterial3: true); final ThemeData theme = ThemeData(useMaterial3: true);
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: theme, theme: theme,
...@@ -45,7 +46,7 @@ void main() { ...@@ -45,7 +46,7 @@ void main() {
)); ));
}); });
testWidgets('Card uses values from CardTheme', (WidgetTester tester) async { testWidgetsWithLeakTracking('Card uses values from CardTheme', (WidgetTester tester) async {
final CardTheme cardTheme = _cardTheme(); final CardTheme cardTheme = _cardTheme();
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
...@@ -67,7 +68,7 @@ void main() { ...@@ -67,7 +68,7 @@ void main() {
expect(material.shape, cardTheme.shape); expect(material.shape, cardTheme.shape);
}); });
testWidgets('Card widget properties take priority over theme', (WidgetTester tester) async { testWidgetsWithLeakTracking('Card widget properties take priority over theme', (WidgetTester tester) async {
const Clip clip = Clip.hardEdge; const Clip clip = Clip.hardEdge;
const Color color = Colors.orange; const Color color = Colors.orange;
const Color shadowColor = Colors.pink; const Color shadowColor = Colors.pink;
...@@ -102,7 +103,7 @@ void main() { ...@@ -102,7 +103,7 @@ void main() {
expect(material.shape, shape); expect(material.shape, shape);
}); });
testWidgets('CardTheme properties take priority over ThemeData properties', (WidgetTester tester) async { testWidgetsWithLeakTracking('CardTheme properties take priority over ThemeData properties', (WidgetTester tester) async {
final CardTheme cardTheme = _cardTheme(); final CardTheme cardTheme = _cardTheme();
final ThemeData themeData = _themeData().copyWith(cardTheme: cardTheme); final ThemeData themeData = _themeData().copyWith(cardTheme: cardTheme);
...@@ -117,7 +118,7 @@ void main() { ...@@ -117,7 +118,7 @@ void main() {
expect(material.color, cardTheme.color); expect(material.color, cardTheme.color);
}); });
testWidgets('Material3 - ThemeData properties are used when no CardTheme is set', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material3 - ThemeData properties are used when no CardTheme is set', (WidgetTester tester) async {
final ThemeData themeData = ThemeData(useMaterial3: true); final ThemeData themeData = ThemeData(useMaterial3: true);
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
...@@ -131,7 +132,7 @@ void main() { ...@@ -131,7 +132,7 @@ void main() {
expect(material.color, themeData.colorScheme.surface); expect(material.color, themeData.colorScheme.surface);
}); });
testWidgets('Material3 - CardTheme customizes shape', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material3 - CardTheme customizes shape', (WidgetTester tester) async {
const CardTheme cardTheme = CardTheme( const CardTheme cardTheme = CardTheme(
color: Colors.white, color: Colors.white,
shape: BeveledRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(7))), shape: BeveledRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(7))),
...@@ -165,7 +166,7 @@ void main() { ...@@ -165,7 +166,7 @@ void main() {
// support is deprecated and the APIs are removed, these tests // support is deprecated and the APIs are removed, these tests
// can be deleted. // can be deleted.
testWidgets('Material2 - ThemeData properties are used when no CardTheme is set', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material2 - ThemeData properties are used when no CardTheme is set', (WidgetTester tester) async {
final ThemeData themeData = ThemeData(useMaterial3: false); final ThemeData themeData = ThemeData(useMaterial3: false);
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
...@@ -179,7 +180,7 @@ void main() { ...@@ -179,7 +180,7 @@ void main() {
expect(material.color, themeData.cardColor); expect(material.color, themeData.cardColor);
}); });
testWidgets('Material2 - Passing no CardTheme returns defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material2 - Passing no CardTheme returns defaults', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: ThemeData(useMaterial3: false), theme: ThemeData(useMaterial3: false),
home: const Scaffold( home: const Scaffold(
...@@ -201,7 +202,7 @@ void main() { ...@@ -201,7 +202,7 @@ void main() {
)); ));
}); });
testWidgets('Material2 - CardTheme customizes shape', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material2 - CardTheme customizes shape', (WidgetTester tester) async {
const CardTheme cardTheme = CardTheme( const CardTheme cardTheme = CardTheme(
color: Colors.white, color: Colors.white,
shape: BeveledRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(7))), shape: BeveledRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(7))),
......
...@@ -743,7 +743,7 @@ void main() { ...@@ -743,7 +743,7 @@ void main() {
); );
}); });
testWidgets('Material2 - CheckboxListTile respects overlayColor in active/pressed/hovered states', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material2 - CheckboxListTile respects overlayColor in active/pressed/hovered states', (WidgetTester tester) async {
tester.binding.focusManager.highlightStrategy = FocusHighlightStrategy.alwaysTraditional; tester.binding.focusManager.highlightStrategy = FocusHighlightStrategy.alwaysTraditional;
const Color fillColor = Color(0xFF000000); const Color fillColor = Color(0xFF000000);
...@@ -859,7 +859,7 @@ void main() { ...@@ -859,7 +859,7 @@ void main() {
); );
}); });
testWidgets('Material3 - CheckboxListTile respects overlayColor in active/pressed/hovered states', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material3 - CheckboxListTile respects overlayColor in active/pressed/hovered states', (WidgetTester tester) async {
tester.binding.focusManager.highlightStrategy = FocusHighlightStrategy.alwaysTraditional; tester.binding.focusManager.highlightStrategy = FocusHighlightStrategy.alwaysTraditional;
const Color fillColor = Color(0xFF000000); const Color fillColor = Color(0xFF000000);
......
...@@ -301,7 +301,7 @@ void main() { ...@@ -301,7 +301,7 @@ void main() {
expect(_getCheckboxMaterial(tester), paints..path(color: selectedFillColor)); expect(_getCheckboxMaterial(tester), paints..path(color: selectedFillColor));
}); });
testWidgets('Checkbox theme overlay color resolves in active/pressed states', (WidgetTester tester) async { testWidgetsWithLeakTracking('Checkbox theme overlay color resolves in active/pressed states', (WidgetTester tester) async {
const Color activePressedOverlayColor = Color(0xFF000001); const Color activePressedOverlayColor = Color(0xFF000001);
const Color inactivePressedOverlayColor = Color(0xFF000002); const Color inactivePressedOverlayColor = Color(0xFF000002);
......
...@@ -137,7 +137,7 @@ void main() { ...@@ -137,7 +137,7 @@ void main() {
)); ));
}); });
testWidgets('debugCheckHasScaffoldMessenger control test', (WidgetTester tester) async { testWidgetsWithLeakTracking('debugCheckHasScaffoldMessenger control test', (WidgetTester tester) async {
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>(); final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>();
final SnackBar snackBar = SnackBar( final SnackBar snackBar = SnackBar(
......
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('Material3 - Divider control test', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material3 - Divider control test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
theme: ThemeData(useMaterial3: true), theme: ThemeData(useMaterial3: true),
...@@ -20,7 +21,7 @@ void main() { ...@@ -20,7 +21,7 @@ void main() {
expect(decoration.border!.bottom.width, 1.0); expect(decoration.border!.bottom.width, 1.0);
}); });
testWidgets('Material2 - Divider control test', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material2 - Divider control test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
theme: ThemeData(useMaterial3: false), theme: ThemeData(useMaterial3: false),
...@@ -34,7 +35,7 @@ void main() { ...@@ -34,7 +35,7 @@ void main() {
expect(decoration.border!.bottom.width, 0.0); expect(decoration.border!.bottom.width, 0.0);
}); });
testWidgets('Divider custom thickness', (WidgetTester tester) async { testWidgetsWithLeakTracking('Divider custom thickness', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -46,7 +47,7 @@ void main() { ...@@ -46,7 +47,7 @@ void main() {
expect(decoration.border!.bottom.width, 5.0); expect(decoration.border!.bottom.width, 5.0);
}); });
testWidgets('Horizontal divider custom indentation', (WidgetTester tester) async { testWidgetsWithLeakTracking('Horizontal divider custom indentation', (WidgetTester tester) async {
const double customIndent = 10.0; const double customIndent = 10.0;
Rect dividerRect; Rect dividerRect;
Rect lineRect; Rect lineRect;
...@@ -91,7 +92,7 @@ void main() { ...@@ -91,7 +92,7 @@ void main() {
expect(lineRect.right, dividerRect.right - customIndent); expect(lineRect.right, dividerRect.right - customIndent);
}); });
testWidgets('Material3 - Vertical Divider Test', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material3 - Vertical Divider Test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
theme: ThemeData(useMaterial3: true), theme: ThemeData(useMaterial3: true),
...@@ -106,7 +107,7 @@ void main() { ...@@ -106,7 +107,7 @@ void main() {
expect(border.left.width, 1.0); expect(border.left.width, 1.0);
}); });
testWidgets('Material2 - Vertical Divider Test', (WidgetTester tester) async { testWidgetsWithLeakTracking('Material2 - Vertical Divider Test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
theme: ThemeData(useMaterial3: false), theme: ThemeData(useMaterial3: false),
...@@ -121,7 +122,7 @@ void main() { ...@@ -121,7 +122,7 @@ void main() {
expect(border.left.width, 0.0); expect(border.left.width, 0.0);
}); });
testWidgets('Divider custom thickness', (WidgetTester tester) async { testWidgetsWithLeakTracking('Divider custom thickness', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -134,7 +135,7 @@ void main() { ...@@ -134,7 +135,7 @@ void main() {
expect(border.left.width, 5.0); expect(border.left.width, 5.0);
}); });
testWidgets('Vertical Divider Test 2', (WidgetTester tester) async { testWidgetsWithLeakTracking('Vertical Divider Test 2', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
theme: ThemeData(useMaterial3: false), theme: ThemeData(useMaterial3: false),
...@@ -159,7 +160,7 @@ void main() { ...@@ -159,7 +160,7 @@ void main() {
expect(find.byType(VerticalDivider), paints..path(strokeWidth: 0.0)); expect(find.byType(VerticalDivider), paints..path(strokeWidth: 0.0));
}); });
testWidgets('Vertical divider custom indentation', (WidgetTester tester) async { testWidgetsWithLeakTracking('Vertical divider custom indentation', (WidgetTester tester) async {
const double customIndent = 10.0; const double customIndent = 10.0;
Rect dividerRect; Rect dividerRect;
Rect lineRect; Rect lineRect;
...@@ -205,7 +206,7 @@ void main() { ...@@ -205,7 +206,7 @@ void main() {
}); });
// Regression test for https://github.com/flutter/flutter/issues/39533 // Regression test for https://github.com/flutter/flutter/issues/39533
testWidgets('createBorderSide does not throw exception with null context', (WidgetTester tester) async { testWidgetsWithLeakTracking('createBorderSide does not throw exception with null context', (WidgetTester tester) async {
// Passing a null context used to throw an exception but no longer does. // Passing a null context used to throw an exception but no longer does.
expect(() => Divider.createBorderSide(null), isNot(throwsAssertionError)); expect(() => Divider.createBorderSide(null), isNot(throwsAssertionError));
expect(() => Divider.createBorderSide(null), isNot(throwsNoSuchMethodError)); expect(() => Divider.createBorderSide(null), isNot(throwsNoSuchMethodError));
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
test('DividerThemeData copyWith, ==, hashCode basics', () { test('DividerThemeData copyWith, ==, hashCode basics', () {
...@@ -21,7 +22,7 @@ void main() { ...@@ -21,7 +22,7 @@ void main() {
expect(dividerTheme.endIndent, null); expect(dividerTheme.endIndent, null);
}); });
testWidgets('Default DividerThemeData debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('Default DividerThemeData debugFillProperties', (WidgetTester tester) async {
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder(); final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
const DividerThemeData().debugFillProperties(builder); const DividerThemeData().debugFillProperties(builder);
...@@ -33,7 +34,7 @@ void main() { ...@@ -33,7 +34,7 @@ void main() {
expect(description, <String>[]); expect(description, <String>[]);
}); });
testWidgets('DividerThemeData implements debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('DividerThemeData implements debugFillProperties', (WidgetTester tester) async {
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder(); final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
const DividerThemeData( const DividerThemeData(
color: Color(0xFFFFFFFF), color: Color(0xFFFFFFFF),
...@@ -58,7 +59,7 @@ void main() { ...@@ -58,7 +59,7 @@ void main() {
}); });
group('Material3 - Horizontal Divider', () { group('Material3 - Horizontal Divider', () {
testWidgets('Passing no DividerThemeData returns defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('Passing no DividerThemeData returns defaults', (WidgetTester tester) async {
final ThemeData theme = ThemeData(useMaterial3: true); final ThemeData theme = ThemeData(useMaterial3: true);
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: theme, theme: theme,
...@@ -82,7 +83,7 @@ void main() { ...@@ -82,7 +83,7 @@ void main() {
expect(lineRect.right, dividerRect.right); expect(lineRect.right, dividerRect.right);
}); });
testWidgets('Uses values from DividerThemeData', (WidgetTester tester) async { testWidgetsWithLeakTracking('Uses values from DividerThemeData', (WidgetTester tester) async {
final DividerThemeData dividerTheme = _dividerTheme(); final DividerThemeData dividerTheme = _dividerTheme();
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: ThemeData(useMaterial3: true, dividerTheme: dividerTheme), theme: ThemeData(useMaterial3: true, dividerTheme: dividerTheme),
...@@ -105,7 +106,7 @@ void main() { ...@@ -105,7 +106,7 @@ void main() {
expect(lineRect.right, dividerRect.right - dividerTheme.endIndent!); expect(lineRect.right, dividerRect.right - dividerTheme.endIndent!);
}); });
testWidgets('DividerTheme overrides defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('DividerTheme overrides defaults', (WidgetTester tester) async {
final DividerThemeData dividerTheme = _dividerTheme(); final DividerThemeData dividerTheme = _dividerTheme();
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: ThemeData(useMaterial3: true), theme: ThemeData(useMaterial3: true),
...@@ -123,7 +124,7 @@ void main() { ...@@ -123,7 +124,7 @@ void main() {
expect(decoration.border!.bottom.color, dividerTheme.color); expect(decoration.border!.bottom.color, dividerTheme.color);
}); });
testWidgets('Widget properties take priority over theme', (WidgetTester tester) async { testWidgetsWithLeakTracking('Widget properties take priority over theme', (WidgetTester tester) async {
const Color color = Colors.purple; const Color color = Colors.purple;
const double height = 10.0; const double height = 10.0;
const double thickness = 5.0; const double thickness = 5.0;
...@@ -160,7 +161,7 @@ void main() { ...@@ -160,7 +161,7 @@ void main() {
}); });
group('Material3 - Vertical Divider', () { group('Material3 - Vertical Divider', () {
testWidgets('Passing no DividerThemeData returns defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('Passing no DividerThemeData returns defaults', (WidgetTester tester) async {
final ThemeData theme = ThemeData(useMaterial3: true); final ThemeData theme = ThemeData(useMaterial3: true);
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: theme, theme: theme,
...@@ -185,7 +186,7 @@ void main() { ...@@ -185,7 +186,7 @@ void main() {
expect(lineRect.bottom, dividerRect.bottom); expect(lineRect.bottom, dividerRect.bottom);
}); });
testWidgets('Uses values from DividerThemeData', (WidgetTester tester) async { testWidgetsWithLeakTracking('Uses values from DividerThemeData', (WidgetTester tester) async {
final DividerThemeData dividerTheme = _dividerTheme(); final DividerThemeData dividerTheme = _dividerTheme();
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: ThemeData(dividerTheme: dividerTheme), theme: ThemeData(dividerTheme: dividerTheme),
...@@ -209,7 +210,7 @@ void main() { ...@@ -209,7 +210,7 @@ void main() {
expect(lineRect.bottom, dividerRect.bottom - dividerTheme.endIndent!); expect(lineRect.bottom, dividerRect.bottom - dividerTheme.endIndent!);
}); });
testWidgets('DividerTheme overrides defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('DividerTheme overrides defaults', (WidgetTester tester) async {
final DividerThemeData dividerTheme = _dividerTheme(); final DividerThemeData dividerTheme = _dividerTheme();
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: ThemeData(useMaterial3: true), theme: ThemeData(useMaterial3: true),
...@@ -228,7 +229,7 @@ void main() { ...@@ -228,7 +229,7 @@ void main() {
expect(border.left.color, dividerTheme.color); expect(border.left.color, dividerTheme.color);
}); });
testWidgets('Widget properties take priority over theme', (WidgetTester tester) async { testWidgetsWithLeakTracking('Widget properties take priority over theme', (WidgetTester tester) async {
const Color color = Colors.purple; const Color color = Colors.purple;
const double width = 10.0; const double width = 10.0;
const double thickness = 5.0; const double thickness = 5.0;
...@@ -271,7 +272,7 @@ void main() { ...@@ -271,7 +272,7 @@ void main() {
// can be deleted. // can be deleted.
group('Material2 - Horizontal Divider', () { group('Material2 - Horizontal Divider', () {
testWidgets('Passing no DividerThemeData returns defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('Passing no DividerThemeData returns defaults', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: ThemeData(useMaterial3: false), theme: ThemeData(useMaterial3: false),
home: const Scaffold( home: const Scaffold(
...@@ -295,7 +296,7 @@ void main() { ...@@ -295,7 +296,7 @@ void main() {
expect(lineRect.right, dividerRect.right); expect(lineRect.right, dividerRect.right);
}); });
testWidgets('DividerTheme overrides defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('DividerTheme overrides defaults', (WidgetTester tester) async {
final DividerThemeData theme = _dividerTheme(); final DividerThemeData theme = _dividerTheme();
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
home: Scaffold( home: Scaffold(
...@@ -314,7 +315,7 @@ void main() { ...@@ -314,7 +315,7 @@ void main() {
}); });
group('Material2 - Vertical Divider', () { group('Material2 - Vertical Divider', () {
testWidgets('Passing no DividerThemeData returns defaults', (WidgetTester tester) async { testWidgetsWithLeakTracking('Passing no DividerThemeData returns defaults', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
theme: ThemeData(useMaterial3: false), theme: ThemeData(useMaterial3: false),
home: const Scaffold( home: const Scaffold(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment