17817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas/*
2ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikas * Copyright 2018 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
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.recyclerview.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.view.ContextThemeWrapper;
257817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.view.ViewGroup;
267817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.widget.TextView;
277817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
28c95a6f1f125ad3a7e1f9f79bccf4b2603bc40ebaAurimas Liutikasimport androidx.annotation.NonNull;
29c95a6f1f125ad3a7e1f9f79bccf4b2603bc40ebaAurimas Liutikasimport androidx.recyclerview.test.R;
30c95a6f1f125ad3a7e1f9f79bccf4b2603bc40ebaAurimas Liutikas
317817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport org.junit.Test;
327817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport org.junit.runner.RunWith;
337817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
347817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas/**
357817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Tests for {@link DividerItemDecoration}.
367817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas */
377817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas@SmallTest
387817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas@RunWith(AndroidJUnit4.class)
397817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikaspublic class DividerItemDecorationTest {
407817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    private static final String[] STRINGS = {"Foo", "Bar", "Great"};
417817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
427817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    @Test
437817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    public void testNullListDivider() {
447817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        final Context context = InstrumentationRegistry.getContext();
457817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        RecyclerView rv = new RecyclerView(context);
467817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.setLayoutManager(new LinearLayoutManager(context));
477817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.setAdapter(new MyAdapter(STRINGS));
487817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        DividerItemDecoration decoration = new DividerItemDecoration(
497817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                new ContextThemeWrapper(context, R.style.nullListDivider),
507817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                DividerItemDecoration.HORIZONTAL);
517817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.addItemDecoration(decoration);
527817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        rv.layout(0, 0, 1000, 1000);
537817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        decoration.onDraw(new Canvas(), rv, null);
547817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    }
557817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
567817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    private static class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
577817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        private String[] mDataset;
587817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
597817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        public static class ViewHolder extends RecyclerView.ViewHolder {
607817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            TextView mTextView;
617817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            ViewHolder(TextView v) {
627817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                super(v);
637817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas                mTextView = v;
647817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            }
657817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
667817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
677817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        MyAdapter(String[] myDataset) {
687817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            mDataset = myDataset;
697817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
707817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
717817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        @Override
728a11e6829c522aa1efcc903afa4c01d337082eabChris Craik        public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
737817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            return new ViewHolder(new TextView(parent.getContext()));
747817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
757817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
767817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        @Override
778a11e6829c522aa1efcc903afa4c01d337082eabChris Craik        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
787817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            holder.mTextView.setText(mDataset[position]);
797817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
807817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas
817817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        @Override
827817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        public int getItemCount() {
837817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas            return mDataset.length;
847817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas        }
857817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas    }
867817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas}
87