1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 */ 17 18 package com.android.settings.search; 19 20 import android.content.Context; 21 import android.graphics.drawable.Drawable; 22 23 import com.android.settings.R; 24 import com.android.settings.SettingsRobolectricTestRunner; 25 import com.android.settings.TestConfig; 26 import com.android.settings.search2.IntentPayload; 27 import com.android.settings.search2.ResultPayload; 28 import com.android.settings.search2.SearchResult; 29 import com.android.settings.search2.SearchResult.Builder; 30 31 import org.junit.Before; 32 import org.junit.Test; 33 import org.junit.runner.RunWith; 34 import org.robolectric.annotation.Config; 35 import org.robolectric.shadows.ShadowApplication; 36 37 import java.util.ArrayList; 38 39 import static com.google.common.truth.Truth.assertThat; 40 41 @RunWith(SettingsRobolectricTestRunner.class) 42 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 43 public class SearchResultBuilderTest { 44 45 private Builder mBuilder; 46 private String mTitle; 47 private String mSummary; 48 private ArrayList<String> mBreadcrumbs; 49 private int mRank; 50 private ResultPayload mResultPayload; 51 private Drawable mIcon; 52 53 @Before setUp()54 public void setUp() { 55 mBuilder = new Builder(); 56 mTitle = "title"; 57 mSummary = "summary"; 58 mBreadcrumbs = new ArrayList<>(); 59 mRank = 3; 60 mResultPayload = new IntentPayload(null); 61 62 final Context context = ShadowApplication.getInstance().getApplicationContext(); 63 mIcon = context.getDrawable(R.drawable.ic_search_history); 64 } 65 66 @Test testAllInfo_BuildSearchResult()67 public void testAllInfo_BuildSearchResult() { 68 mBuilder.addTitle(mTitle) 69 .addSummary(mSummary) 70 .addRank(mRank) 71 .addBreadcrumbs(mBreadcrumbs) 72 .addIcon(mIcon) 73 .addPayload(mResultPayload); 74 SearchResult result = mBuilder.build(); 75 76 assertThat(result).isNotNull(); 77 assertThat(result.title).isEqualTo(mTitle); 78 assertThat(result.summary).isEqualTo(mSummary); 79 assertThat(result.rank).isEqualTo(mRank); 80 assertThat(result.breadcrumbs).isEqualTo(mBreadcrumbs); 81 assertThat(result.icon).isEqualTo(mIcon); 82 assertThat(result.payload).isEqualTo(mResultPayload); 83 } 84 85 @Test testNoTitle_BuildSearchResultException()86 public void testNoTitle_BuildSearchResultException() { 87 mBuilder.addSummary(mSummary) 88 .addRank(mRank) 89 .addBreadcrumbs(mBreadcrumbs) 90 .addIcon(mIcon) 91 .addPayload(mResultPayload); 92 93 SearchResult result = null; 94 try { 95 result = mBuilder.build(); 96 } catch (IllegalArgumentException e) { 97 // passes. 98 } 99 assertThat(result).isNull(); 100 } 101 102 @Test testNoRank_BuildSearchResult_pass()103 public void testNoRank_BuildSearchResult_pass() { 104 mBuilder.addTitle(mTitle) 105 .addSummary(mSummary) 106 .addBreadcrumbs(mBreadcrumbs) 107 .addIcon(mIcon) 108 .addPayload(mResultPayload); 109 110 assertThat(mBuilder.build()).isNotNull(); 111 } 112 113 @Test testNoIcon_BuildSearchResult_pass()114 public void testNoIcon_BuildSearchResult_pass() { 115 mBuilder.addTitle(mTitle) 116 .addSummary(mSummary) 117 .addRank(mRank) 118 .addBreadcrumbs(mBreadcrumbs) 119 .addPayload(mResultPayload); 120 121 assertThat(mBuilder.build()).isNotNull(); 122 } 123 124 @Test testNoPayload_BuildSearchResultException()125 public void testNoPayload_BuildSearchResultException() { 126 mBuilder.addTitle(mTitle) 127 .addSummary(mSummary) 128 .addRank(mRank) 129 .addBreadcrumbs(mBreadcrumbs) 130 .addIcon(mIcon); 131 132 SearchResult result = null; 133 try { 134 result = mBuilder.build(); 135 } catch (IllegalArgumentException e) { 136 // passes. 137 } 138 assertThat(result).isNull(); 139 } 140 } 141 142 143