17817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas/*
27817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Copyright (C) 2017 The Android Open Source Project
37817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas *
47817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License");
57817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * you may not use this file except in compliance with the License.
67817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * You may obtain a copy of the License at
77817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas *
87817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas *      http://www.apache.org/licenses/LICENSE-2.0
97817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas *
107817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software
117817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS,
127817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * See the License for the specific language governing permissions and
147817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * limitations under the License.
157817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas */
167817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
177817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikaspackage android.support.v7.widget;
187817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
197817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.content.Context;
207817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.graphics.Canvas;
217817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.support.test.InstrumentationRegistry;
227817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.support.test.filters.SmallTest;
237817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.support.test.runner.AndroidJUnit4;
247817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.support.v7.recyclerview.test.R;
257817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.view.ContextThemeWrapper;
267817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.view.ViewGroup;
277817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.widget.TextView;
287817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
297817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport org.junit.Test;
307817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport org.junit.runner.RunWith;
317817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
327817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas/**
337817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Tests for {@link DividerItemDecoration}.
347817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas */
357817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas@SmallTest
367817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas@RunWith(AndroidJUnit4.class)
377817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikaspublic class DividerItemDecorationTest {
387817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    private static final String[] STRINGS = {"Foo", "Bar", "Great"};
397817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
407817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    @Test
417817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    public void testNullListDivider() {
427817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        final Context context = InstrumentationRegistry.getContext();
437817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        RecyclerView rv = new RecyclerView(context);
447817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.setLayoutManager(new LinearLayoutManager(context));
457817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.setAdapter(new MyAdapter(STRINGS));
467817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        DividerItemDecoration decoration = new DividerItemDecoration(
477817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                new ContextThemeWrapper(context, R.style.nullListDivider),
487817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                DividerItemDecoration.HORIZONTAL);
497817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.addItemDecoration(decoration);
507817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.layout(0, 0, 1000, 1000);
517817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        decoration.onDraw(new Canvas(), rv, null);
527817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    }
537817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
547817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    private static class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
557817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        private String[] mDataset;
567817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
577817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        public static class ViewHolder extends RecyclerView.ViewHolder {
587817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            TextView mTextView;
597817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            ViewHolder(TextView v) {
607817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                super(v);
617817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                mTextView = v;
627817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            }
637817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
647817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
657817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        MyAdapter(String[] myDataset) {
667817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            mDataset = myDataset;
677817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
687817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
697817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        @Override
707817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
717817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            return new ViewHolder(new TextView(parent.getContext()));
727817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
737817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
747817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        @Override
757817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        public void onBindViewHolder(ViewHolder holder, int position) {
767817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            holder.mTextView.setText(mDataset[position]);
777817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
787817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
797817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        @Override
807817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        public int getItemCount() {
817817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            return mDataset.length;
827817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
837817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    }
847817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas}
85