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