Skip to content

Commit 0d5b44e

Browse files
committed
Create Landscape Orientation Tests
1 parent b8314e6 commit 0d5b44e

File tree

1 file changed

+277
-0
lines changed

1 file changed

+277
-0
lines changed

test/responsive_wrapper_test.dart

Lines changed: 277 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
import 'package:flutter/foundation.dart';
12
import 'package:flutter/material.dart';
23
import 'package:flutter_test/flutter_test.dart';
34
import 'package:responsive_framework/responsive_framework.dart';
5+
import 'package:responsive_framework/utils/responsive_utils.dart';
46

57
import 'test_utils.dart';
68

@@ -827,4 +829,279 @@ void main() {
827829
false);
828830
});
829831
});
832+
833+
group('Landscape Mode', () {
834+
// Test if platform correctly detects landscape mode.
835+
testWidgets('Landscape Platform Android', (WidgetTester tester) async {
836+
// Width is greater than height.
837+
setScreenSize(tester, Size(1200, 800));
838+
839+
// Set target platform to Android.
840+
debugDefaultTargetPlatformOverride = TargetPlatform.android;
841+
842+
Key key = UniqueKey();
843+
Widget widget = Builder(
844+
builder: (context) {
845+
return MaterialApp(
846+
home: ResponsiveWrapper(
847+
key: key,
848+
breakpoints: [],
849+
child: Container(),
850+
shrinkWrap: false,
851+
),
852+
);
853+
},
854+
);
855+
await tester.pumpWidget(widget);
856+
await tester.pump();
857+
dynamic state = tester.state(find.byKey(key));
858+
// Landscape supported in Android by default.
859+
expect(state.isLandscapePlatform, true);
860+
861+
// Unset global to avoid crash.
862+
debugDefaultTargetPlatformOverride = null;
863+
});
864+
865+
testWidgets('Landscape Platform iOS', (WidgetTester tester) async {
866+
// Width is greater than height.
867+
setScreenSize(tester, Size(1200, 800));
868+
869+
// Set target platform to Android.
870+
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
871+
872+
Key key = UniqueKey();
873+
Widget widget = Builder(
874+
builder: (context) {
875+
return MaterialApp(
876+
home: ResponsiveWrapper(
877+
key: key,
878+
breakpoints: [],
879+
child: Container(),
880+
shrinkWrap: false,
881+
),
882+
);
883+
},
884+
);
885+
await tester.pumpWidget(widget);
886+
await tester.pump();
887+
dynamic state = tester.state(find.byKey(key));
888+
// Landscape supported in Android by default.
889+
expect(state.isLandscapePlatform, true);
890+
891+
// Unset global to avoid crash.
892+
debugDefaultTargetPlatformOverride = null;
893+
});
894+
895+
testWidgets('Landscape Platform Windows', (WidgetTester tester) async {
896+
// Width is greater than height.
897+
setScreenSize(tester, Size(1200, 800));
898+
899+
// Set target platform to Windows.
900+
debugDefaultTargetPlatformOverride = TargetPlatform.windows;
901+
902+
Key key = UniqueKey();
903+
Widget widget = Builder(
904+
builder: (context) {
905+
return MaterialApp(
906+
home: ResponsiveWrapper(
907+
key: key,
908+
breakpoints: [],
909+
child: Container(),
910+
shrinkWrap: false,
911+
),
912+
// Set target platform to Windows.
913+
);
914+
},
915+
);
916+
await tester.pumpWidget(widget);
917+
await tester.pump();
918+
dynamic state = tester.state(find.byKey(key));
919+
// Landscape not supported in windows by default.
920+
expect(state.isLandscapePlatform, false);
921+
922+
// Unset global to avoid crash.
923+
debugDefaultTargetPlatformOverride = null;
924+
});
925+
926+
testWidgets('Landscape Platform Web', (WidgetTester tester) async {
927+
// TODO: How to simulate test on web?
928+
});
929+
930+
// Test landscape platforms override
931+
testWidgets('Landscape Platform Override', (WidgetTester tester) async {
932+
// Width is greater than height.
933+
setScreenSize(tester, Size(1200, 800));
934+
935+
// Set target platform to Windows.
936+
debugDefaultTargetPlatformOverride = TargetPlatform.windows;
937+
938+
Key key = UniqueKey();
939+
Widget widget = Builder(
940+
builder: (context) {
941+
return MaterialApp(
942+
home: ResponsiveWrapper(
943+
key: key,
944+
breakpoints: [],
945+
shrinkWrap: false,
946+
// Override platform to enable landscape on windows.
947+
landscapePlatforms: [ResponsiveTargetPlatform.windows],
948+
child: Container(),
949+
),
950+
// Set target platform to Windows.
951+
);
952+
},
953+
);
954+
await tester.pumpWidget(widget);
955+
await tester.pump();
956+
dynamic state = tester.state(find.byKey(key));
957+
expect(state.isLandscapePlatform, true);
958+
959+
// Unset global to avoid crash.
960+
debugDefaultTargetPlatformOverride = null;
961+
});
962+
963+
testWidgets('isLandscape Function', (WidgetTester tester) async {
964+
// Width is greater than height.
965+
setScreenSize(tester, Size(1200, 800));
966+
967+
// Set target platform to Android.
968+
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
969+
970+
Key key = UniqueKey();
971+
Widget widget = Builder(
972+
builder: (context) {
973+
return MaterialApp(
974+
home: ResponsiveWrapper(
975+
key: key,
976+
breakpoints: [],
977+
breakpointsLandscape: [
978+
ResponsiveBreakpoint.autoScale(800),
979+
],
980+
child: Container(),
981+
shrinkWrap: false,
982+
),
983+
);
984+
},
985+
);
986+
await tester.pumpWidget(widget);
987+
await tester.pump();
988+
dynamic state = tester.state(find.byKey(key));
989+
// Landscape supported in Android by default.
990+
expect(state.isLandscape, true);
991+
992+
// Switch to portrait.
993+
setScreenSize(tester, Size(800, 1200));
994+
await tester.pump();
995+
state = tester.state(find.byKey(key));
996+
expect(state.isLandscape, false);
997+
998+
// Unset global to avoid crash.
999+
debugDefaultTargetPlatformOverride = null;
1000+
});
1001+
1002+
// Text active breakpoints.
1003+
testWidgets('Landscape Active Breakpoints', (WidgetTester tester) async {
1004+
// Width is greater than height.
1005+
setScreenSize(tester, Size(1200, 800));
1006+
1007+
// Set target platform to Android.
1008+
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
1009+
1010+
List<ResponsiveBreakpoint> breakpoints = [
1011+
ResponsiveBreakpoint.autoScale(400),
1012+
ResponsiveBreakpoint.autoScale(800),
1013+
ResponsiveBreakpoint.autoScale(1200),
1014+
];
1015+
1016+
Key key = UniqueKey();
1017+
Widget widget = Builder(
1018+
builder: (context) {
1019+
return MaterialApp(
1020+
home: ResponsiveWrapper(
1021+
key: key,
1022+
breakpoints: [],
1023+
breakpointsLandscape: breakpoints,
1024+
child: Container(),
1025+
shrinkWrap: false,
1026+
),
1027+
);
1028+
},
1029+
);
1030+
await tester.pumpWidget(widget);
1031+
await tester.pump();
1032+
dynamic state = tester.state(find.byKey(key));
1033+
expect(state.breakpoints, breakpoints);
1034+
1035+
// Unset global to avoid crash.
1036+
debugDefaultTargetPlatformOverride = null;
1037+
});
1038+
1039+
// Test switch active breakpoints.
1040+
testWidgets('Landscape Switch Breakpoints', (WidgetTester tester) async {
1041+
// Width is greater than height.
1042+
setScreenSize(tester, Size(1200, 800));
1043+
1044+
// Set target platform to Android.
1045+
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
1046+
1047+
List<ResponsiveBreakpoint> breakpoints = [
1048+
ResponsiveBreakpoint.autoScale(600),
1049+
ResponsiveBreakpoint.autoScale(700),
1050+
ResponsiveBreakpoint.autoScale(1000),
1051+
];
1052+
1053+
List<ResponsiveBreakpoint> breakpointsLandscape = [
1054+
ResponsiveBreakpoint.autoScale(400),
1055+
ResponsiveBreakpoint.autoScale(800),
1056+
ResponsiveBreakpoint.autoScale(1200),
1057+
];
1058+
1059+
Key key = UniqueKey();
1060+
Widget widget = Builder(
1061+
builder: (context) {
1062+
return MaterialApp(
1063+
home: ResponsiveWrapper(
1064+
key: key,
1065+
breakpoints: breakpoints,
1066+
breakpointsLandscape: breakpointsLandscape,
1067+
minWidth: 400,
1068+
minWidthLandscape: 800,
1069+
maxWidth: 1200,
1070+
maxWidthLandscape: 2560,
1071+
defaultScale: true,
1072+
defaultScaleLandscape: false,
1073+
defaultScaleFactor: 0.8,
1074+
defaultScaleFactorLandscape: 1.2,
1075+
defaultName: 'PORTRAIT',
1076+
defaultNameLandscape: 'LANDSCAPE',
1077+
child: Container(),
1078+
shrinkWrap: false,
1079+
),
1080+
);
1081+
},
1082+
);
1083+
await tester.pumpWidget(widget);
1084+
await tester.pump();
1085+
dynamic state = tester.state(find.byKey(key));
1086+
expect(state.breakpoints, breakpointsLandscape);
1087+
expect(state.minWidth, 800);
1088+
expect(state.maxWidth, 2560);
1089+
expect(state.defaultScale, false);
1090+
expect(state.defaultScaleFactor, 1.2);
1091+
expect(state.defaultName, 'LANDSCAPE');
1092+
1093+
resetScreenSize(tester);
1094+
setScreenSize(tester, Size(600, 1200));
1095+
await tester.pump();
1096+
expect(state.breakpoints, breakpoints);
1097+
expect(state.minWidth, 400);
1098+
expect(state.maxWidth, 1200);
1099+
expect(state.defaultScale, true);
1100+
expect(state.defaultScaleFactor, 0.8);
1101+
expect(state.defaultName, 'PORTRAIT');
1102+
1103+
// Unset global to avoid crash.
1104+
debugDefaultTargetPlatformOverride = null;
1105+
});
1106+
});
8301107
}

0 commit comments

Comments
 (0)