1717package com.google.android.flexbox
1818
1919import android.view.View
20+ import android.widget.TextView
2021import androidx.test.rule.ActivityTestRule
2122import androidx.test.runner.AndroidJUnit4
2223import com.google.android.flexbox.test.FlexboxTestActivity
@@ -36,6 +37,13 @@ import org.junit.runner.RunWith
3637@RunWith(AndroidJUnit4 ::class )
3738class FlexboxHelperTest {
3839
40+ private val LONG_TEXT = " Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " +
41+ " eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim " +
42+ " veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " +
43+ " consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum " +
44+ " dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, " +
45+ " sunt in culpa qui officia deserunt mollit anim id est laborum."
46+
3947 @JvmField
4048 @Rule
4149 var activityRule = ActivityTestRule (FlexboxTestActivity ::class .java)
@@ -325,6 +333,72 @@ class FlexboxHelperTest {
325333 assertThat(view4.measuredHeight, `is `(125 ))
326334 }
327335
336+ @Test
337+ @Throws(Throwable ::class )
338+ fun testDetermineMainSize_directionRow_fixedSizeViewAndShrinkable_doNotExceedMaxMainSize () {
339+ val activity = activityRule.activity
340+ val lp1 = FlexboxLayout .LayoutParams (100 , 100 )
341+ val view1 = View (activity)
342+ lp1.flexShrink = 0f
343+ view1.layoutParams = lp1
344+ val lp2 = FlexboxLayout .LayoutParams (
345+ FlexboxLayout .LayoutParams .WRAP_CONTENT ,
346+ FlexboxLayout .LayoutParams .WRAP_CONTENT )
347+ val view2 = TextView (activity)
348+ view2.layoutParams = lp2
349+ view2.text = LONG_TEXT
350+ flexContainer.addView(view1)
351+ flexContainer.addView(view2)
352+ flexContainer.flexWrap = FlexWrap .NOWRAP
353+ val widthMeasureSpec = View .MeasureSpec .makeMeasureSpec(500 , View .MeasureSpec .AT_MOST )
354+ val heightMeasureSpec = View .MeasureSpec .makeMeasureSpec(1000 , View .MeasureSpec .UNSPECIFIED )
355+ val result = FlexboxHelper .FlexLinesResult ()
356+ flexboxHelper.calculateHorizontalFlexLines(result, widthMeasureSpec, heightMeasureSpec)
357+ flexContainer.flexLines = result.mFlexLines
358+ flexboxHelper.determineMainSize(widthMeasureSpec, heightMeasureSpec)
359+
360+ // Container with WRAP_CONTENT and a max width forces resizable children to shrink
361+ // to avoid exceeding max available space.
362+ assertThat(view1.measuredWidth, `is `(100 ))
363+ assertThat(view2.measuredWidth, `is `(400 ))
364+ }
365+
366+ @Test
367+ @Throws(Throwable ::class )
368+ fun testDetermineMainSize_directionRow_twoFixedSizeViewsAndShrinkable_doNotExceedMaxMainSize () {
369+ val activity = activityRule.activity
370+ val lp1 = FlexboxLayout .LayoutParams (100 , 100 )
371+ val view1 = View (activity)
372+ lp1.flexShrink = 0f
373+ view1.layoutParams = lp1
374+ val lp2 = FlexboxLayout .LayoutParams (
375+ FlexboxLayout .LayoutParams .WRAP_CONTENT ,
376+ FlexboxLayout .LayoutParams .WRAP_CONTENT )
377+ val view2 = TextView (activity)
378+ view2.layoutParams = lp2
379+ view2.text = LONG_TEXT
380+ val lp3 = FlexboxLayout .LayoutParams (100 , 100 )
381+ val view3 = View (activity)
382+ lp3.flexShrink = 0f
383+ view3.layoutParams = lp3
384+ flexContainer.addView(view1)
385+ flexContainer.addView(view2)
386+ flexContainer.addView(view3)
387+ flexContainer.flexWrap = FlexWrap .NOWRAP
388+ val widthMeasureSpec = View .MeasureSpec .makeMeasureSpec(500 , View .MeasureSpec .AT_MOST )
389+ val heightMeasureSpec = View .MeasureSpec .makeMeasureSpec(1000 , View .MeasureSpec .UNSPECIFIED )
390+ val result = FlexboxHelper .FlexLinesResult ()
391+ flexboxHelper.calculateHorizontalFlexLines(result, widthMeasureSpec, heightMeasureSpec)
392+ flexContainer.flexLines = result.mFlexLines
393+ flexboxHelper.determineMainSize(widthMeasureSpec, heightMeasureSpec)
394+
395+ // Container with WRAP_CONTENT and a max width forces resizable children to shrink
396+ // to avoid exceeding max available space.
397+ assertThat(view1.measuredWidth, `is `(100 ))
398+ assertThat(view2.measuredWidth, `is `(300 ))
399+ assertThat(view3.measuredWidth, `is `(100 ))
400+ }
401+
328402 @Test
329403 @Throws(Throwable ::class )
330404 fun testDetermineCrossSize_direction_row_alignContent_stretch () {
0 commit comments