14143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar/* 24143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * Copyright (C) 2016 The Android Open Source Project 34143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * 44143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 54143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * you may not use this file except in compliance with the License. 64143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * You may obtain a copy of the License at 74143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * 84143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 94143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * 104143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * Unless required by applicable law or agreed to in writing, software 114143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 124143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * See the License for the specific language governing permissions and 144143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar * limitations under the License. 154143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar */ 164143554adb9b31b700b6876a251a64419e6111e2Yigit Boyarpackage android.support.v7.widget; 174143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 186b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport static android.support.v7.widget.BaseWrapContentWithAspectRatioTest.AspectRatioMeasureBehavior; 196b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport static android.support.v7.widget.BaseWrapContentWithAspectRatioTest.MeasureBehavior; 206b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport static android.support.v7.widget.BaseWrapContentWithAspectRatioTest.WrapContentAdapter; 216b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport static android.support.v7.widget.LinearLayoutManager.HORIZONTAL; 226b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport static android.support.v7.widget.LinearLayoutManager.VERTICAL; 236b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport static android.view.ViewGroup.LayoutParams.MATCH_PARENT; 246b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; 254143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 2629f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyarimport android.app.Activity; 274143554adb9b31b700b6876a251a64419e6111e2Yigit Boyarimport android.graphics.Rect; 28beae3c4833f02deea11babe5e95aea9b0865ec91Yigit Boyarimport android.os.Build; 29beae3c4833f02deea11babe5e95aea9b0865ec91Yigit Boyarimport android.support.test.filters.SdkSuppress; 30fad2335f169d36b7b6f2c0ec8ddfe6c0094c2072Aurimas Liutikasimport android.test.suitebuilder.annotation.MediumTest; 314143554adb9b31b700b6876a251a64419e6111e2Yigit Boyarimport android.view.Gravity; 3229f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyarimport android.view.View; 334143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 346b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport org.junit.Test; 356b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport org.junit.runner.RunWith; 366b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport org.junit.runners.Parameterized; 376b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar 386b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport java.util.Arrays; 396b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyarimport java.util.List; 404143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 41fad2335f169d36b7b6f2c0ec8ddfe6c0094c2072Aurimas Liutikas@MediumTest 426b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar@RunWith(Parameterized.class) 434143554adb9b31b700b6876a251a64419e6111e2Yigit Boyarpublic class GridLayoutManagerWrapContentTest extends BaseWrapContentTest { 446b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar private boolean mHorizontal = false; 456b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar private int mSpanCount = 3; 4629f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar private RecyclerView.ItemDecoration mItemDecoration; 47de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar 486b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar public GridLayoutManagerWrapContentTest(Rect padding) { 496b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar super(new WrapContentConfig(false, false, padding)); 506b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar } 514143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 526b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar @Parameterized.Parameters(name = "paddingRect={0}") 536b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar public static List<Rect> params() { 546b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar return Arrays.asList( 556b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(0, 0, 0, 0), 566b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(5, 0, 0, 0), 576b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(0, 3, 0, 0), 586b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(0, 0, 2, 0), 596b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(0, 0, 0, 7), 606b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(3, 5, 7, 11) 616b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar ); 624143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar } 634143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 644143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar @Override 654143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar RecyclerView.LayoutManager createLayoutManager() { 666b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar GridLayoutManager lm = new GridLayoutManager(getActivity(), mSpanCount); 676b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar lm.setOrientation(mHorizontal ? HORIZONTAL : VERTICAL); 686b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar return lm; 696b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar } 706b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar 7129f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar @Override 7229f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar protected WrappedRecyclerView createRecyclerView(Activity activity) { 7329f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar WrappedRecyclerView recyclerView = super.createRecyclerView(activity); 7429f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar if (mItemDecoration != null) { 7529f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar recyclerView.addItemDecoration(mItemDecoration); 7629f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar } 7729f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar return recyclerView; 7829f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar } 7929f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar 80beae3c4833f02deea11babe5e95aea9b0865ec91Yigit Boyar @SdkSuppress(minSdkVersion = Build.VERSION_CODES.M) 8129f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar @Test 82f3844451301cb14ca885e125cb27f108a834c386Yigit Boyar public void testUnspecifiedWithHint() throws Throwable { 83f3844451301cb14ca885e125cb27f108a834c386Yigit Boyar unspecifiedWithHintTest(mHorizontal); 84f3844451301cb14ca885e125cb27f108a834c386Yigit Boyar } 85f3844451301cb14ca885e125cb27f108a834c386Yigit Boyar 86f3844451301cb14ca885e125cb27f108a834c386Yigit Boyar @Test 8729f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar public void testVerticalWithItemDecors() throws Throwable { 8829f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar mItemDecoration = new RecyclerView.ItemDecoration() { 8929f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar @Override 9029f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar public void getItemOffsets(Rect outRect, View view, RecyclerView parent, 9129f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar RecyclerView.State state) { 9229f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar outRect.set(0, 5, 0, 10); 9329f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar } 9429f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar }; 9529f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar TestedFrameLayout.FullControlLayoutParams lp = 9629f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar mWrapContentConfig.toLayoutParams(WRAP_CONTENT, WRAP_CONTENT); 9729f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar WrapContentAdapter adapter = new WrapContentAdapter( 9829f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar new MeasureBehavior(10, 10, WRAP_CONTENT, MATCH_PARENT) 9929f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar ); 10029f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar Rect[] expected = new Rect[] { 10129f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar new Rect(0, 0, 10, 25) 10229f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar }; 10329f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar layoutAndCheck(lp, adapter, expected, 30, 25); 10429f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar } 10529f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar 10629f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar @Test 10729f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar public void testHorizontalWithItemDecors() throws Throwable { 10829f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar mItemDecoration = new RecyclerView.ItemDecoration() { 10929f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar @Override 11029f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar public void getItemOffsets(Rect outRect, View view, RecyclerView parent, 11129f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar RecyclerView.State state) { 11229f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar outRect.set(5, 0, 10, 0); 11329f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar } 11429f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar }; 11529f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar TestedFrameLayout.FullControlLayoutParams lp = 11629f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar mWrapContentConfig.toLayoutParams(WRAP_CONTENT, WRAP_CONTENT); 11729f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar WrapContentAdapter adapter = new WrapContentAdapter( 11829f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar new MeasureBehavior(10, 10, MATCH_PARENT, WRAP_CONTENT) 11929f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar ); 12029f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar Rect[] expected = new Rect[] { 12129f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar new Rect(0, 0, 25, 10) 12229f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar }; 12329f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar layoutAndCheck(lp, adapter, expected, 75, 10); 12429f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar } 12529f43aa1bb825a46fd7cf161a0cd1d5353aaf821Yigit Boyar 1266b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar @Test 1276b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar public void testHorizontal() throws Throwable { 1286b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar mHorizontal = true; 1296b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar mSpanCount = 2; 1306b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar TestedFrameLayout.FullControlLayoutParams lp = 1316b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar mWrapContentConfig.toLayoutParams(WRAP_CONTENT, WRAP_CONTENT); 1326b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar WrapContentAdapter adapter = new WrapContentAdapter( 1336b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new MeasureBehavior(10, 10, WRAP_CONTENT, WRAP_CONTENT), 1346b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new MeasureBehavior(10, 10, WRAP_CONTENT, WRAP_CONTENT), 1356b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new MeasureBehavior(10, 10, WRAP_CONTENT, WRAP_CONTENT), 1366b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new MeasureBehavior(20, 10, WRAP_CONTENT, WRAP_CONTENT) 1376b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar ); 1386b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar Rect[] expected = new Rect[] { 1396b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(0, 0, 10, 10), 1406b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(0, 10, 10, 20), 1416b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(10, 0, 30, 10), 1426b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar new Rect(10, 10, 30, 20) 1436b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar }; 1446b6a29eea7f6a212447b3cc7b45a081b609ca4b1Yigit Boyar layoutAndCheck(lp, adapter, expected, 30, 20); 1454143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar } 1464143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 1474143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar @Test 1484143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar public void testHandleSecondLineChangingBorders() throws Throwable { 1494143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar TestedFrameLayout.FullControlLayoutParams lp = 1504143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar mWrapContentConfig.toLayoutParams(WRAP_CONTENT, WRAP_CONTENT); 1514143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar WrapContentAdapter adapter = new WrapContentAdapter( 1524143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new MeasureBehavior(10, 10, WRAP_CONTENT, WRAP_CONTENT), 1534143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new MeasureBehavior(10, 10, WRAP_CONTENT, WRAP_CONTENT), 1544143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new MeasureBehavior(10, 10, WRAP_CONTENT, WRAP_CONTENT), 1554143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new MeasureBehavior(20, 10, WRAP_CONTENT, WRAP_CONTENT) 1564143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar ); 1574143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar Rect[] expected = new Rect[] { 1584143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(0, 0, 10, 10), 1594143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(20, 0, 30, 10), 1604143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(40, 0, 50, 10), 1614143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(0, 10, 20, 20) 1624143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar }; 1634143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar layoutAndCheck(lp, adapter, expected, 60, 20); 1644143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar } 1654143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 1664143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar @Test 1674143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar public void testSecondLineAffectingBordersWithAspectRatio() throws Throwable { 1684143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar TestedFrameLayout.FullControlLayoutParams lp = 1694143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar mWrapContentConfig.toLayoutParams(WRAP_CONTENT, WRAP_CONTENT); 1704143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar WrapContentAdapter adapter = new WrapContentAdapter( 1714143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new AspectRatioMeasureBehavior(10, 5, MATCH_PARENT, WRAP_CONTENT) 1724143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar .aspectRatio(HORIZONTAL, .5f), 1734143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new MeasureBehavior(10, 5, WRAP_CONTENT, WRAP_CONTENT), 1744143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new MeasureBehavior(10, 5, MATCH_PARENT, WRAP_CONTENT), 1754143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new MeasureBehavior(20, 10, WRAP_CONTENT, WRAP_CONTENT) 1764143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar ); 1774143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar Rect[] expected = new Rect[] { 1784143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(0, 0, 20, 10), 1794143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(20, 0, 30, 10), 1804143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(40, 0, 60, 10), 1814143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar new Rect(0, 10, 20, 20) 1824143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar }; 1834143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar layoutAndCheck(lp, adapter, expected, 60, 20); 1844143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar } 1854143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 186de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar @Test 187de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar public void testVerticalWithHorizontalMargins() throws Throwable { 188de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar TestedFrameLayout.FullControlLayoutParams lp = 189de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar mWrapContentConfig.toLayoutParams(WRAP_CONTENT, WRAP_CONTENT); 190de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar WrapContentAdapter adapter = new WrapContentAdapter( 191de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar new MeasureBehavior(100, 50, 100, WRAP_CONTENT).withMargins(10, 0, 5, 0) 192de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar ); 193de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar Rect[] expected = new Rect[] { 194de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar new Rect(0, 0, 115, 50) 195de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar }; 196de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar layoutAndCheck(lp, adapter, expected, 345, 50); 197de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar } 198de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar 199de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar @Test 200de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar public void testHorizontalWithHorizontalMargins() throws Throwable { 201de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar mHorizontal = true; 202de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar mSpanCount = 1; 203de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar TestedFrameLayout.FullControlLayoutParams lp = 204de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar mWrapContentConfig.toLayoutParams(WRAP_CONTENT, WRAP_CONTENT); 205de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar WrapContentAdapter adapter = new WrapContentAdapter( 206de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar new MeasureBehavior(100, 50, 100, WRAP_CONTENT).withMargins(10, 0, 5, 0), 207de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar new MeasureBehavior(100, 50, 100, WRAP_CONTENT).withMargins(3, 4, 5, 6) 208de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar ); 209de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar Rect[] expected = new Rect[] { 210de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar new Rect(0, 0, 115, 50), 211de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar new Rect(115, 0, 223, 60) 212de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar }; 213de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar layoutAndCheck(lp, adapter, expected, 223, 60); 214de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar } 215de8a5de43b647f9b61f4859a22a0ce59155f442aYigit Boyar 2164143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar @Override 2174143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar protected int getVerticalGravity(RecyclerView.LayoutManager layoutManager) { 2184143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar return Gravity.TOP; 2194143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar } 2204143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar 2214143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar @Override 2224143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar protected int getHorizontalGravity(RecyclerView.LayoutManager layoutManager) { 2234143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar return Gravity.LEFT; 2244143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar } 2254143554adb9b31b700b6876a251a64419e6111e2Yigit Boyar} 226