@@ -10,7 +10,6 @@ module Testable.Element exposing
16 , expectRoundedEquality
15 , expectRoundedEquality
@@ -21,7 +20,6 @@ module Testable.Element exposing
21 , isVisible
20 , isVisible
27 , moveDown
25 , moveDown
@@ -38,14 +36,10 @@ module Testable.Element exposing
47 , textColumn
42 , textColumn
49 , transparent
43 , transparent
@@ -69,16 +63,11 @@ import Testable
69import Testable.Runner
63import Testable.Runner
72−{-| This is used when we want to run all tests in a test suite instead of one at a time.
74−toProgram : Testable.Runner.Testable -> Testable.Runner.TestableProgram
76− Testable.Runner.program [ testable ]
79−layout : List (Testable.Attr msg) -> Testable.Element Testable.Runner.Msg -> Testable.Runner.Testable
66+layout : List (Testable.Attr msg) -> Testable.Element Testable.Runner.Msg -> Testable.Runner.TestableProgram
80layout attrs elem =
67layout attrs elem =
81− Testable.Runner.testable "Test" elem
68+ Testable.Runner.program
69+ [ ( "Tests Run", elem )
84text : String -> Testable.Element msg
73text : String -> Testable.Element msg
@@ -107,60 +96,13 @@ none =
109paragraph : List (Testable.Attr msg) -> List (Testable.Element msg) -> Testable.Element msg
98paragraph : List (Testable.Attr msg) -> List (Testable.Element msg) -> Testable.Element msg
110−paragraph attrs =
99+paragraph =
113− implicitTest (widthHelper Nothing Nothing (Fill 1))
114− :: implicitTest (heightHelper Nothing Nothing Shrink)
117− Testable.Paragraph (skipOverridden withImplicits)
100+ Testable.Paragraph
120textColumn : List (Testable.Attr msg) -> List (Testable.Element msg) -> Testable.Element msg
103textColumn : List (Testable.Attr msg) -> List (Testable.Element msg) -> Testable.Element msg
121textColumn attrs =
104textColumn attrs =
124− implicitTest (widthHelper (Just 500) (Just 750) (Fill 1))
125− :: implicitTest (heightHelper Nothing Nothing Shrink)
128− Testable.TextColumn (skipOverridden withImplicits)
132− List (Testable.Attr msg)
135− , label : Testable.Element msg
137− -> Testable.Element msg
139− Testable.Link details.url
140− (implicitWidthHeightShrink attrs)
105+ Testable.TextColumn (implicitWidthHeightShrink attrs)
145− Testable.Attr Element.clip
149−scrollbars : Testable.Attr msg
151− Testable.Attr Element.scrollbars
155−scrollbarY : Testable.Attr msg
157− Testable.Attr Element.scrollbarY
161−scrollbarX : Testable.Attr msg
163− Testable.Attr Element.scrollbarX
166{-| Old labeling mechanism that i removed to hastily
108{-| Old labeling mechanism that i removed to hastily
@@ -334,11 +276,6 @@ paddingXY x y =
338− List.filter Tuple.first ls
339− |> List.map Tuple.second
342widthHelper maybeMin maybeMax len =
279widthHelper maybeMin maybeMax len =
344 addMin l =
281 addMin l =
@@ -407,10 +344,7 @@ widthHelper maybeMin maybeMax len =
409 \found ->
346 \found ->
410− [ expectRoundedEquality
411− { expected = toFloat val
412− , found = found.self.bbox.width
347+ [ Testable.true "exact width is exact" (floor found.self.bbox.width == val)
414 , Testable.true "min/max is upheld" (minMaxTest (floor found.self.bbox.width))
348 , Testable.true "min/max is upheld" (minMaxTest (floor found.self.bbox.width))
@@ -432,7 +366,7 @@ widthHelper maybeMin maybeMax len =
434 \context ->
368 \context ->
435− if List.member context.parentLayout [ Testable.IsNearby Testable.OnRight, Testable.IsNearby Testable.OnLeft ] then
369+ if List.member context.location [ Testable.IsNearby Testable.OnRight, Testable.IsNearby Testable.OnLeft ] then
436 [ Testable.true "width fill doesn't apply to onright/onleft elements" True ]
370 [ Testable.true "width fill doesn't apply to onright/onleft elements" True ]
@@ -440,93 +374,33 @@ widthHelper maybeMin maybeMax len =
440 parentAvailableWidth =
374 parentAvailableWidth =
441 context.parent.bbox.width - (context.self.bbox.padding.left + context.self.bbox.padding.right)
375 context.parent.bbox.width - (context.self.bbox.padding.left + context.self.bbox.padding.right)
444− [ case context.parentLayout of
377+ [ case context.location of
445− Testable.IsNearby _ ->
378+ Testable.IsNearby _ ->
446− [ Testable.true "Nearby Element has fill width"
379+ Testable.true "Nearby Element has fill width"
447− ((floor context.parent.bbox.width == floor context.self.bbox.width)
380+ ((floor context.parent.bbox.width == floor context.self.bbox.width)
448− || minMaxTest (floor context.self.bbox.width)
381+ || minMaxTest (floor context.self.bbox.width)
452− Testable.InColumn ->
384+ Testable.InColumn ->
453− [ Testable.true "Element within column has fill width"
385+ Testable.true "Element within column has fill width"
454− ((floor parentAvailableWidth == floor context.self.bbox.width)
386+ ((floor parentAvailableWidth == floor context.self.bbox.width)
455− || minMaxTest (floor context.self.bbox.width)
387+ || minMaxTest (floor context.self.bbox.width)
459− Testable.InEl ->
390+ Testable.InEl ->
460− [ Testable.true "Element within element has fill width" <|
391+ Testable.true "Element within element has fill width" <|
461− (floor parentAvailableWidth == floor context.self.bbox.width)
392+ (floor parentAvailableWidth == floor context.self.bbox.width)
462− || minMaxTest (floor context.self.bbox.width)
393+ || minMaxTest (floor context.self.bbox.width)
467− spacePerPortion =
397+ spacePerPortion =
468− parentAvailableWidth / toFloat (List.length context.siblings + 1)
398+ parentAvailableWidth / toFloat (List.length context.siblings + 1)
470− [ Testable.true "element has fill width" <|
400+ Testable.true "element has fill width" <|
471− (floor spacePerPortion == floor context.self.bbox.width)
401+ (floor spacePerPortion == floor context.self.bbox.width)
472− || minMaxTest (floor context.self.bbox.width)
402+ || minMaxTest (floor context.self.bbox.width)
474− , [ Testable.lessThanOrEqual "not larger than parent"
475− context.self.bbox.width
476− context.parent.bbox.width
478− , case context.selfElement of
479− Testable.Paragraph _ _ ->
480− -- A paragraph with width fill
481− -- we want to test for correct text wrapping here.
489− |> List.map childWidth
490− |> List.append (List.map .width context.self.textMetrics)
494− context.self.bbox.padding.left + context.self.bbox.padding.right
496− totalCalculatedWidth =
497− totalChildren + horizontalPadding
500− if boxChildrenHeight > 20 then
501− ceiling (boxChildrenHeight / 20)
504− ceiling (totalCalculatedWidth / context.self.bbox.width)
514− [ Testable.true "text wrapping, checking height"
515− -- all we're doing here is testing if wrapping is occurring
516− -- not the exact height, which is a little tricky to calculate perfectly without more information.
517− (if expectedLines > 1 then
518− context.self.bbox.height >= (20 * 2)
521− -- then it's less than 2 ~ line heights
522− -- there's some weird variance here which makes it hard to be exact.
523− context.self.bbox.height < (20 * 2)
532 Shrink ->
406 Shrink ->
@@ -541,208 +415,36 @@ widthHelper maybeMin maybeMax len =
541 , id = Testable.IsWidth
415 , id = Testable.IsWidth
543 \context ->
417 \context ->
544− case context.selfElement of
552− |> List.map childWidth
553− |> List.append (List.map .width context.self.textMetrics)
557− context.self.bbox.padding.left + context.self.bbox.padding.right
560− [ ( (context.parentLayout /= Testable.InParagraph)
561− && (context.parentLayout /= Testable.InTextCol)
562− , Testable.rounded "equals children"
563− { expected = totalChildren + horizontalPadding
564− , found = context.self.bbox.width
567− , ( context.parentLayout /= Testable.AtRoot
568− , Testable.lessThanOrEqual "not larger than parent"
569− context.self.bbox.width
570− context.parent.bbox.width
574− Testable.Link _ _ _ ->
576− childWidth child =
419+ childWidth child =
577− child.bbox.width
420+ -- TODO: add margin values to widths
581− |> List.map childWidth
582− |> List.append (List.map .width context.self.textMetrics)
586− context.self.bbox.padding.left + context.self.bbox.padding.right
589− [ ( (context.parentLayout /= Testable.InParagraph)
590− && (context.parentLayout /= Testable.InTextCol)
591− , Testable.rounded "equals children"
592− { expected = totalChildren + horizontalPadding
593− , found = context.self.bbox.width
596− , ( context.parentLayout /= Testable.AtRoot
597− , Testable.lessThanOrEqual "not larger than parent"
598− context.self.bbox.width
599− context.parent.bbox.width
603− Testable.Row rowAttrs _ ->
604− -- width of row is the sum of all children widths
605− -- both text elements and others.
608− child.bbox.width
421+ child.bbox.width
610− totalChildren =
423+ totalChildren =
611− context.children
424+ context.children
612− |> List.map childWidth
425+ |> List.map childWidth
613− |> List.append (List.map .width context.self.textMetrics)
614− |> List.sum
426+ |> List.sum
616− horizontalPadding =
428+ horizontalPadding =
617− context.self.bbox.padding.left + context.self.bbox.padding.right
429+ context.self.bbox.padding.left + context.self.bbox.padding.right
619− spacingAmount =
431+ spacingValue =
620− Testable.getSpacingFromAttributes rowAttrs
623− toFloat spacingAmount * (toFloat (List.length context.children) - 1)
432+ toFloat context.parentSpacing * (toFloat (List.length context.children) - 1)
625− listIf
434+ if totalChildren == 0 then
626− [ ( True
435+ -- TODO: The issue is that we have a hard time measuring `text` elements
627− , expectRoundedEquality
436+ -- So if a element has a text child, then it's width isn't going to show up in the system.
628− { expected = totalChildren + horizontalPadding + totalSpacing
437+ [ Testable.Todo "Calculate text size for width-shrink calculation"
629− , found = context.self.bbox.width
632− , ( context.parentLayout /= Testable.AtRoot
633− , Testable.lessThanOrEqual "not larger than parent"
634− context.self.bbox.width
635− context.parent.bbox.width
639− Testable.Column _ _ ->
640− -- The width of the column is the width of the widest child.
644− + context.self.bbox.padding.left
645− + context.self.bbox.padding.right
651− + context.self.bbox.padding.left
652− + context.self.bbox.padding.right
654− context.self.textMetrics
658− |> List.map childWidth
659− |> List.append textChildren
663− , expectRoundedEquality
664− { expected = Maybe.withDefault 0 (List.maximum allChildren)
665− , found = context.self.bbox.width
668− , ( context.parentLayout /= Testable.AtRoot
669− , Testable.lessThanOrEqual "not larger than parent"
670− context.self.bbox.width
671− context.parent.bbox.width
675− Testable.TextColumn _ _ ->
676− -- The width of the column is the width of the widest child.
680− + context.self.bbox.padding.left
681− + context.self.bbox.padding.right
687− + context.self.bbox.padding.left
688− + context.self.bbox.padding.right
690− context.self.textMetrics
694− |> List.map childWidth
695− |> List.append textChildren
699− , expectRoundedEquality
700− { expected = Maybe.withDefault 0 (List.maximum allChildren)
701− , found = context.self.bbox.width
704− , ( context.parentLayout /= Testable.AtRoot
705− , Testable.lessThanOrEqual "not larger than parent"
706− context.self.bbox.width
707− context.parent.bbox.width
711− Testable.Paragraph _ _ ->
712− -- This should be the size it's text,
713− -- unless it takes up all available space, in which case it should wrap.
720− |> List.map childWidth
721− |> List.append (List.map .width context.self.textMetrics)
725− context.self.bbox.padding.left + context.self.bbox.padding.right
729− , expectRoundedEquality
730− { expected = totalChildren + horizontalPadding
731− , found = context.self.bbox.width
734− , ( context.parentLayout /= Testable.AtRoot
735− , Testable.lessThanOrEqual "not larger than parent"
736− context.self.bbox.width
737− context.parent.bbox.width
744− Testable.Empty ->
440+ else
441+ -- This fails if this element is actually a column
442+ -- So we need to capture what this element is in order to do this calculation.
443+ [ expectRoundedEquality
444+ { expected = totalChildren + horizontalPadding + spacingValue
445+ , found = context.self.bbox.width
@@ -814,10 +516,8 @@ heightHelper maybeMin maybeMax len =
814 , id = Testable.IsHeight
516 , id = Testable.IsHeight
816 \found ->
518 \found ->
817− [ expectRoundedEquality
519+ [ Testable.true ("exact height is exact: " ++ String.fromInt (floor found.self.bbox.height) ++ "," ++ String.fromInt val)
818− { expected = toFloat val
819− , found = found.self.bbox.height
520+ (floor found.self.bbox.height == val)
821 , Testable.true "min/max holds true"
521 , Testable.true "min/max holds true"
822 (minMaxTest (floor found.self.bbox.height))
522 (minMaxTest (floor found.self.bbox.height))
@@ -835,7 +535,7 @@ heightHelper maybeMin maybeMax len =
835 , id = Testable.IsHeight
535 , id = Testable.IsHeight
837 \context ->
537 \context ->
838− [ if List.member context.parentLayout [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
538+ [ if List.member context.location [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
839 Testable.true "height fill doesn't apply to above/below elements" True
539 Testable.true "height fill doesn't apply to above/below elements" True
@@ -843,7 +543,7 @@ heightHelper maybeMin maybeMax len =
843 parentAvailableHeight =
543 parentAvailableHeight =
844 context.parent.bbox.height - (context.self.bbox.padding.top + context.self.bbox.padding.bottom)
544 context.parent.bbox.height - (context.self.bbox.padding.top + context.self.bbox.padding.bottom)
846− case context.parentLayout of
546+ case context.location of
847 Testable.IsNearby _ ->
547 Testable.IsNearby _ ->
848 Testable.true "Nearby Element has fill height"
548 Testable.true "Nearby Element has fill height"
849 ((floor context.parent.bbox.height == floor context.self.bbox.height)
549 ((floor context.parent.bbox.height == floor context.self.bbox.height)
@@ -884,131 +584,36 @@ heightHelper maybeMin maybeMax len =
884 , id = Testable.IsHeight
584 , id = Testable.IsHeight
886 \context ->
586 \context ->
887− case context.selfElement of
893− if List.isEmpty context.children then
894− -- context.self.textMetrics
895− -- |> List.map Testable.textHeight
897− -- TODO: apparently the font metrics we have are for the literal characters rendered
898− -- not for the font itself.
899− [ Testable.todo "calculate height from actual text metrics"
903− [ expectRoundedEquality
906− |> List.map childHeight
908− |> (\h -> h + context.self.bbox.padding.top + context.self.bbox.padding.bottom)
909− , found = context.self.bbox.height
911− , Testable.lessThanOrEqual "not larger than parent"
912− context.self.bbox.height
913− context.parent.bbox.height
916− Testable.Link _ _ _ ->
921− if List.isEmpty context.children then
922− -- context.self.textMetrics
923− -- |> List.map Testable.textHeight
925− -- TODO: apparently the font metrics we have are for the literal characters rendered
926− -- not for the font itself.
927− [ Testable.todo "calculate height from actual text metrics"
931− [ expectRoundedEquality
934− |> List.map childHeight
936− |> (\h -> h + context.self.bbox.padding.top + context.self.bbox.padding.bottom)
937− , found = context.self.bbox.height
939− , Testable.lessThanOrEqual "not larger than parent"
940− context.self.bbox.height
941− context.parent.bbox.height
949− if List.isEmpty context.children then
950− -- context.self.textMetrics
951− -- |> List.map Testable.textHeight
953− -- TODO: apparently the font metrics we have are for the literal characters rendered
954− -- not for the font itself.
955− [ Testable.todo "calculate height from actual text metrics" ]
958− [ expectRoundedEquality
961− |> List.map childHeight
588+ childHeight child =
962− |> List.maximum
589+ -- TODO: add margin values to heights
963− |> Maybe.withDefault 0
964− |> (\h -> h + context.self.bbox.padding.top + context.self.bbox.padding.bottom)
965− , found = context.self.bbox.height
967− , Testable.lessThanOrEqual "not larger than parent"
968− context.self.bbox.height
969− context.parent.bbox.height
972− Testable.Column colAttrs _ ->
975− child.bbox.height
590+ child.bbox.height
977− totalChildren =
592+ totalChildren =
978− context.children
593+ context.children
979− |> List.map childHeight
594+ |> List.map childHeight
980− |> List.append (List.map Testable.textHeight context.self.textMetrics)
981− |> List.sum
595+ |> List.sum
983− verticalPadding =
597+ verticalPadding =
984− context.self.bbox.padding.top + context.self.bbox.padding.bottom
598+ context.self.bbox.padding.top + context.self.bbox.padding.bottom
986− spacingAmount =
600+ spacingValue =
987− Testable.getSpacingFromAttributes colAttrs
990− toFloat spacingAmount * (toFloat (List.length context.children) - 1)
601+ toFloat context.parentSpacing * (toFloat (List.length context.children) - 1)
992− [ expectRoundedEquality
603+ if totalChildren == 0 then
993− { expected = totalChildren + verticalPadding + totalSpacing
604+ -- TODO: The issue is that we have a hard time measuring `text` elements
994− , found = context.self.bbox.height
605+ -- So if a element has a text child, then it's height isn't going to show up in the system.
995− }
606+ [ Testable.Todo "Calculate expected height shrink"
996− , Testable.lessThanOrEqual "not larger than parent"
997− context.self.bbox.height
998− context.parent.bbox.height
1001− Testable.TextColumn _ _ ->
1004− Testable.Paragraph _ _ ->
1010− Testable.Empty ->
609+ else
610+ -- This fails if this element is actually a column
611+ -- So we need to capture what this element is in order to do this calculation.
612+ [ expectRoundedEquality
613+ { expected = totalChildren + verticalPadding + spacingValue
614+ , found = context.self.bbox.height
@@ -1111,11 +716,11 @@ alignLeft =
1111 , id = Testable.NoId
716 , id = Testable.NoId
1112 , test =
717 , test =
1113 \found ->
718 \found ->
1114− [ if List.member found.parentLayout [ Testable.IsNearby Testable.OnLeft, Testable.IsNearby Testable.OnRight ] then
719+ [ if List.member found.location [ Testable.IsNearby Testable.OnLeft, Testable.IsNearby Testable.OnRight ] then
1115 Testable.true "alignLeft doesn't apply to elements that are onLeft or onRight" True
720 Testable.true "alignLeft doesn't apply to elements that are onLeft or onRight" True
1118− List.member found.parentLayout
723+ List.member found.location
1119 [ Testable.IsNearby Testable.InFront
724 [ Testable.IsNearby Testable.InFront
1120 , Testable.IsNearby Testable.Behind
725 , Testable.IsNearby Testable.Behind
1121 , Testable.IsNearby Testable.Above
726 , Testable.IsNearby Testable.Above
@@ -1134,7 +739,7 @@ alignLeft =
1137− case found.parentLayout of
742+ case found.location of
1138 Testable.InRow ->
743 Testable.InRow ->
1140 siblingsOnLeft =
745 siblingsOnLeft =
@@ -1180,7 +785,7 @@ centerX =
1180 parentCenter =
785 parentCenter =
1181 found.parent.bbox.left + (found.parent.bbox.width / 2)
786 found.parent.bbox.left + (found.parent.bbox.width / 2)
1183− if List.member found.parentLayout [ Testable.IsNearby Testable.OnRight, Testable.IsNearby Testable.OnLeft ] then
788+ if List.member found.location [ Testable.IsNearby Testable.OnRight, Testable.IsNearby Testable.OnLeft ] then
1184 [ Testable.true "centerX doesn't apply to elements that are onLeft or onRight" True ]
789 [ Testable.true "centerX doesn't apply to elements that are onLeft or onRight" True ]
1186 else if List.length found.siblings == 0 then
791 else if List.length found.siblings == 0 then
@@ -1191,7 +796,7 @@ centerX =
1194− case found.parentLayout of
799+ case found.location of
1195 Testable.InRow ->
800 Testable.InRow ->
1197 siblingsOnLeft =
802 siblingsOnLeft =
@@ -1245,11 +850,11 @@ alignRight =
1245 , id = Testable.NoId
850 , id = Testable.NoId
1246 , test =
851 , test =
1247 \found ->
852 \found ->
1248− if List.member found.parentLayout [ Testable.IsNearby Testable.OnLeft, Testable.IsNearby Testable.OnRight ] then
853+ if List.member found.location [ Testable.IsNearby Testable.OnLeft, Testable.IsNearby Testable.OnRight ] then
1249 [ Testable.true "alignRight doesn't apply to elements that are onLeft or onRight" True ]
854 [ Testable.true "alignRight doesn't apply to elements that are onLeft or onRight" True ]
1252− List.member found.parentLayout
857+ List.member found.location
1253 [ Testable.IsNearby Testable.InFront
858 [ Testable.IsNearby Testable.InFront
1254 , Testable.IsNearby Testable.Behind
859 , Testable.IsNearby Testable.Behind
1255 , Testable.IsNearby Testable.Above
860 , Testable.IsNearby Testable.Above
@@ -1270,7 +875,7 @@ alignRight =
1273− case found.parentLayout of
878+ case found.location of
1274 Testable.InRow ->
879 Testable.InRow ->
1276 siblingsOnRight =
881 siblingsOnRight =
@@ -1308,11 +913,11 @@ alignTop =
1308 , id = Testable.NoId
913 , id = Testable.NoId
1309 , test =
914 , test =
1310 \found ->
915 \found ->
1311− if List.member found.parentLayout [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
916+ if List.member found.location [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
1312 [ Testable.true "alignTop doesn't apply to elements that are above or below" True ]
917 [ Testable.true "alignTop doesn't apply to elements that are above or below" True ]
1315− List.member found.parentLayout
920+ List.member found.location
1316 [ Testable.IsNearby Testable.InFront
921 [ Testable.IsNearby Testable.InFront
1317 , Testable.IsNearby Testable.Behind
922 , Testable.IsNearby Testable.Behind
1318 , Testable.IsNearby Testable.OnRight
923 , Testable.IsNearby Testable.OnRight
@@ -1333,7 +938,7 @@ alignTop =
1336− case found.parentLayout of
941+ case found.location of
1337 Testable.InColumn ->
942 Testable.InColumn ->
1339 siblingsAbove =
944 siblingsAbove =
@@ -1371,11 +976,11 @@ alignBottom =
1371 , id = Testable.NoId
976 , id = Testable.NoId
1372 , test =
977 , test =
1373 \found ->
978 \found ->
1374− if List.member found.parentLayout [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
979+ if List.member found.location [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
1375 [ Testable.true "alignBottom doesn't apply to elements that are above or below" True ]
980 [ Testable.true "alignBottom doesn't apply to elements that are above or below" True ]
1378− List.member found.parentLayout
983+ List.member found.location
1379 [ Testable.IsNearby Testable.InFront
984 [ Testable.IsNearby Testable.InFront
1380 , Testable.IsNearby Testable.Behind
985 , Testable.IsNearby Testable.Behind
1381 , Testable.IsNearby Testable.OnRight
986 , Testable.IsNearby Testable.OnRight
@@ -1396,7 +1001,7 @@ alignBottom =
1399− case found.parentLayout of
1004+ case found.location of
1400 Testable.InColumn ->
1005 Testable.InColumn ->
1402 siblingsBelow =
1007 siblingsBelow =
@@ -1453,7 +1058,7 @@ centerY =
1453 parentCenter =
1058 parentCenter =
1454 found.parent.bbox.top + (found.parent.bbox.height / 2)
1059 found.parent.bbox.top + (found.parent.bbox.height / 2)
1456− if List.member found.parentLayout [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
1061+ if List.member found.location [ Testable.IsNearby Testable.Above, Testable.IsNearby Testable.Below ] then
1457 [ Testable.true "centerY doesn't apply to elements that are above or below" True ]
1062 [ Testable.true "centerY doesn't apply to elements that are above or below" True ]
1459 else if List.length found.siblings == 0 then
1064 else if List.length found.siblings == 0 then
@@ -1464,7 +1069,7 @@ centerY =
1467− case found.parentLayout of
1072+ case found.location of
1468 Testable.InColumn ->
1073 Testable.InColumn ->
1470 siblingsOnTop =
1075 siblingsOnTop =