1c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay/*
2c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * Copyright (C) 2015 The Android Open Source Project
3c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay *
4c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * Licensed under the Apache License, Version 2.0 (the "License");
5c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * you may not use this file except in compliance with the License.
6c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * You may obtain a copy of the License at
7c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay *
8c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay *      http://www.apache.org/licenses/LICENSE-2.0
9c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay *
10c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * Unless required by applicable law or agreed to in writing, software
11c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * distributed under the License is distributed on an "AS IS" BASIS,
12c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * See the License for the specific language governing permissions and
14c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay * limitations under the License.
15c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay */
16c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
17c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKaypackage com.android.documentsui.dirlist;
18c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
19a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Linimport android.app.PendingIntent;
20c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKayimport android.content.Context;
21c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKayimport android.database.Cursor;
22eed2f4ec78227b5e173ff667a5517637a91b9a30Steve McKayimport android.support.test.filters.MediumTest;
23c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKayimport android.test.AndroidTestCase;
24c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
25a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Linimport com.android.documentsui.ActionHandler;
26e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tanimport com.android.documentsui.Model;
2798f8c5f502e049a6b85439d773949cdbaa0f78aeSteve McKayimport com.android.documentsui.base.Features;
28d9caa6ab53aa784acaf241c0ded3c4ae2d342bf8Steve McKayimport com.android.documentsui.base.State;
29a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Linimport com.android.documentsui.testing.TestActionHandler;
30def4868b1e9ef8a5718c6bc2e165026cbe52b5daSteve McKayimport com.android.documentsui.testing.TestEnv;
31c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
32eed2f4ec78227b5e173ff667a5517637a91b9a30Steve McKay@MediumTest
33c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKaypublic class ModelBackedDocumentsAdapterTest extends AndroidTestCase {
34c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
35c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    private static final String AUTHORITY = "test_authority";
36def4868b1e9ef8a5718c6bc2e165026cbe52b5daSteve McKay
37def4868b1e9ef8a5718c6bc2e165026cbe52b5daSteve McKay    private TestEnv mEnv;
38a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Lin    private ActionHandler mActionHandler;
39e910403ec00c2064ceb9b0b2fe54e5077d7376ceSteve McKay    private ModelBackedDocumentsAdapter mAdapter;
40c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
41c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    public void setUp() {
42c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
43c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        final Context testContext = TestContext.createStorageTestContext(getContext(), AUTHORITY);
44def4868b1e9ef8a5718c6bc2e165026cbe52b5daSteve McKay        mEnv = TestEnv.create(AUTHORITY);
45a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Lin        mActionHandler = new TestActionHandler();
46c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
47c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        DocumentsAdapter.Environment env = new TestEnvironment(testContext);
48c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
49e910403ec00c2064ceb9b0b2fe54e5077d7376ceSteve McKay        mAdapter = new ModelBackedDocumentsAdapter(
50c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay                env, new IconHelper(testContext, State.MODE_GRID));
51990f76ea83a249cd8fc3c797e40626b94cd7945cSteve McKay        mAdapter.getModelUpdateListener().accept(Model.Update.UPDATE);
52c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    }
53c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
54c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    // Tests that the item count is correct.
55c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    public void testItemCount() {
56def4868b1e9ef8a5718c6bc2e165026cbe52b5daSteve McKay        assertEquals(mEnv.model.getItemCount(), mAdapter.getItemCount());
57c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    }
58c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
59c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    private final class TestEnvironment implements DocumentsAdapter.Environment {
60c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        private final Context testContext;
61c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
6298f8c5f502e049a6b85439d773949cdbaa0f78aeSteve McKay        @Override
6398f8c5f502e049a6b85439d773949cdbaa0f78aeSteve McKay        public Features getFeatures() {
6498f8c5f502e049a6b85439d773949cdbaa0f78aeSteve McKay            return mEnv.features;
6598f8c5f502e049a6b85439d773949cdbaa0f78aeSteve McKay        }
6698f8c5f502e049a6b85439d773949cdbaa0f78aeSteve McKay
67a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Lin        @Override
68a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Lin        public ActionHandler getActionHandler() { return mActionHandler; }
69a40e6e34c4a7b9c83d086f167ea4812240783a70Ben Lin
70c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        private TestEnvironment(Context testContext) {
71c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay            this.testContext = testContext;
72c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        }
73c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
74c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
75c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public boolean isSelected(String id) {
76c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay            return false;
77c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        }
78c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
79c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
80c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public boolean isDocumentEnabled(String mimeType, int flags) {
81c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay            return true;
82c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        }
83c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
84c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
85c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public void initDocumentHolder(DocumentHolder holder) {}
86c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
87c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
88c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public Model getModel() {
89def4868b1e9ef8a5718c6bc2e165026cbe52b5daSteve McKay            return mEnv.model;
90c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        }
91c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
92c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
93c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public State getDisplayState() {
94c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay            return null;
95c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        }
96c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
97c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
987b38f3465c3779384a17e84cc04609d9d68b56f4Ben Lin        public boolean isInSearchMode() {
997b38f3465c3779384a17e84cc04609d9d68b56f4Ben Lin            return false;
1007b38f3465c3779384a17e84cc04609d9d68b56f4Ben Lin        }
1017b38f3465c3779384a17e84cc04609d9d68b56f4Ben Lin
1027b38f3465c3779384a17e84cc04609d9d68b56f4Ben Lin        @Override
103c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public Context getContext() {
104c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay            return testContext;
105c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        }
106c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
107c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
108c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public int getColumnCount() {
109c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay            return 4;
110c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        }
111c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay
112c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        @Override
113c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay        public void onBindDocumentHolder(DocumentHolder holder, Cursor cursor) {}
114c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay    }
115c5ecf8900ee11d06c3f000b2e7be14fc47fe1791Steve McKay}
116