@@ -514,5 +514,153 @@ void main() {
514514 testWidgets ('Screen Size Infinite' , (WidgetTester tester) async {
515515 // Infinite screen width or height is not allowed.
516516 }, skip: true );
517+
518+ // Test convenience comparators.
519+ testWidgets ('Breakpoint Comparators' , (WidgetTester tester) async {
520+ // Verify comparator at named breakpoint returns correct values.
521+ setScreenSize (tester, Size (600 , 1200 ));
522+ Key key = UniqueKey ();
523+ Widget widget = MaterialApp (
524+ home: ResponsiveWrapper (
525+ key: key,
526+ breakpoints: [
527+ ResponsiveBreakpoint (breakpoint: 450 , name: MOBILE ),
528+ ResponsiveBreakpoint (breakpoint: 500 , name: MOBILE ),
529+ ResponsiveBreakpoint (breakpoint: 550 ),
530+ ResponsiveBreakpoint (breakpoint: 600 , name: TABLET ),
531+ ResponsiveBreakpoint (breakpoint: 650 , name: TABLET ),
532+ ResponsiveBreakpoint (breakpoint: 700 ),
533+ ResponsiveBreakpoint (breakpoint: 800 , name: DESKTOP ),
534+ ],
535+ child: Container (),
536+ ),
537+ );
538+ await tester.pumpWidget (widget);
539+ await tester.pump ();
540+ dynamic state = tester.state (find.byKey (key));
541+ expect (ResponsiveWrapperData .fromResponsiveWrapper (state).equals (MOBILE ),
542+ false );
543+ expect (ResponsiveWrapperData .fromResponsiveWrapper (state).equals (TABLET ),
544+ true );
545+ expect (ResponsiveWrapperData .fromResponsiveWrapper (state).equals (DESKTOP ),
546+ false );
547+ expect (
548+ ResponsiveWrapperData .fromResponsiveWrapper (state)
549+ .isLargerThan (MOBILE ),
550+ true );
551+ expect (
552+ ResponsiveWrapperData .fromResponsiveWrapper (state)
553+ .isLargerThan (TABLET ),
554+ false );
555+ expect (
556+ ResponsiveWrapperData .fromResponsiveWrapper (state)
557+ .isLargerThan (DESKTOP ),
558+ false );
559+ expect (
560+ ResponsiveWrapperData .fromResponsiveWrapper (state)
561+ .isSmallerThan (MOBILE ),
562+ false );
563+ expect (
564+ ResponsiveWrapperData .fromResponsiveWrapper (state)
565+ .isSmallerThan (TABLET ),
566+ true );
567+ expect (
568+ ResponsiveWrapperData .fromResponsiveWrapper (state)
569+ .isSmallerThan (DESKTOP ),
570+ true );
571+
572+ // Verify comparator at unnamed breakpoint works correctly.
573+ key = UniqueKey ();
574+ widget = MaterialApp (
575+ home: ResponsiveWrapper (
576+ key: key,
577+ breakpoints: [
578+ ResponsiveBreakpoint (breakpoint: 450 , name: MOBILE ),
579+ ResponsiveBreakpoint (breakpoint: 500 , name: TABLET ),
580+ ResponsiveBreakpoint (breakpoint: 550 , name: MOBILE ),
581+ ResponsiveBreakpoint (breakpoint: 600 ),
582+ ResponsiveBreakpoint (breakpoint: 650 , name: TABLET ),
583+ ResponsiveBreakpoint (breakpoint: 700 , name: DESKTOP ),
584+ ResponsiveBreakpoint (breakpoint: 800 , name: DESKTOP ),
585+ ],
586+ child: Container (),
587+ ),
588+ );
589+ await tester.pumpWidget (widget);
590+ await tester.pump ();
591+ state = tester.state (find.byKey (key));
592+ expect (ResponsiveWrapperData .fromResponsiveWrapper (state).equals (MOBILE ),
593+ false );
594+ expect (ResponsiveWrapperData .fromResponsiveWrapper (state).equals (TABLET ),
595+ false );
596+ expect (ResponsiveWrapperData .fromResponsiveWrapper (state).equals (DESKTOP ),
597+ false );
598+ expect (
599+ ResponsiveWrapperData .fromResponsiveWrapper (state)
600+ .isLargerThan (MOBILE ),
601+ true );
602+ expect (
603+ ResponsiveWrapperData .fromResponsiveWrapper (state)
604+ .isLargerThan (TABLET ),
605+ true );
606+ expect (
607+ ResponsiveWrapperData .fromResponsiveWrapper (state)
608+ .isLargerThan (DESKTOP ),
609+ false );
610+ expect (
611+ ResponsiveWrapperData .fromResponsiveWrapper (state)
612+ .isSmallerThan (MOBILE ),
613+ false );
614+ expect (
615+ ResponsiveWrapperData .fromResponsiveWrapper (state)
616+ .isSmallerThan (TABLET ),
617+ true );
618+ expect (
619+ ResponsiveWrapperData .fromResponsiveWrapper (state)
620+ .isSmallerThan (DESKTOP ),
621+ true );
622+
623+ // Test largerThan upper bound.
624+ key = UniqueKey ();
625+ widget = MaterialApp (
626+ home: ResponsiveWrapper (
627+ key: key,
628+ breakpoints: [
629+ ResponsiveBreakpoint (breakpoint: 450 , name: MOBILE ),
630+ ResponsiveBreakpoint (breakpoint: 500 , name: TABLET ),
631+ ResponsiveBreakpoint (breakpoint: 550 , name: DESKTOP ),
632+ ResponsiveBreakpoint (breakpoint: 600 ),
633+ ],
634+ child: Container (),
635+ ),
636+ );
637+ await tester.pumpWidget (widget);
638+ await tester.pump ();
639+ state = tester.state (find.byKey (key));
640+ expect (
641+ ResponsiveWrapperData .fromResponsiveWrapper (state)
642+ .isLargerThan (MOBILE ),
643+ true );
644+ expect (
645+ ResponsiveWrapperData .fromResponsiveWrapper (state)
646+ .isLargerThan (TABLET ),
647+ true );
648+ expect (
649+ ResponsiveWrapperData .fromResponsiveWrapper (state)
650+ .isLargerThan (DESKTOP ),
651+ true );
652+ expect (
653+ ResponsiveWrapperData .fromResponsiveWrapper (state)
654+ .isSmallerThan (MOBILE ),
655+ false );
656+ expect (
657+ ResponsiveWrapperData .fromResponsiveWrapper (state)
658+ .isSmallerThan (TABLET ),
659+ false );
660+ expect (
661+ ResponsiveWrapperData .fromResponsiveWrapper (state)
662+ .isSmallerThan (DESKTOP ),
663+ false );
664+ });
517665 });
518666}
0 commit comments