172f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert/* 272f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * Copyright (C) 2010 The Android Open Source Project 372f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * 472f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 572f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * you may not use this file except in compliance with the License. 672f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * You may obtain a copy of the License at 772f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * 872f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 972f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * 1072f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 1172f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 1272f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1372f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * See the License for the specific language governing permissions and 1472f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * limitations under the License. 1572f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert */ 1672f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 1772f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringertpackage com.android.quicksearchbox; 1872f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 19b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringertimport static com.google.common.base.Objects.equal; 20b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 21b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringertimport com.google.common.collect.UnmodifiableIterator; 22b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 235229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwoodimport java.util.Collection; 24b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringertimport java.util.Iterator; 25b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringertimport java.util.NoSuchElementException; 26b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 2772f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringertimport junit.framework.Assert; 2872f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 2972f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert/** 3072f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert * Test utilities for {@link ShortcutCursor}. 3172f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert */ 3272f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringertpublic class SuggestionCursorUtil extends Assert { 3372f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 3472f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert public static void assertNoSuggestions(SuggestionCursor suggestions) { 3572f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert assertNoSuggestions("", suggestions); 3672f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert } 3772f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 3872f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert public static void assertNoSuggestions(String message, SuggestionCursor suggestions) { 3972f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert assertNotNull(suggestions); 4072f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert assertEquals(message, 0, suggestions.getCount()); 4172f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert } 4272f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 4372f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert public static void assertSameSuggestion(String message, int position, 4472f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert SuggestionCursor expected, SuggestionCursor observed) { 4508ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertSameSuggestion(message, expected, position, observed, position); 4608ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert } 4708ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert 4808ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert public static void assertSameSuggestion(String message, 4908ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert SuggestionCursor expected, int positionExpected, 5008ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert SuggestionCursor observed, int positionObserved) { 5108ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert message += " at positions " + positionExpected + "(expected) " 5208ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert + positionObserved + " (observed)"; 5308ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert expected.moveTo(positionExpected); 5408ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.moveTo(positionObserved); 5508ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertSuggestionEquals(message, expected, observed); 5672f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert } 5772f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 5872f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert public static void assertSameSuggestions(SuggestionCursor expected, SuggestionCursor observed) { 598749e77dddec9e7984ee86a7be6f5ba4fce44362Bjorn Bringert assertSameSuggestions("", expected, observed); 6072f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert } 6172f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 6272f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert public static void assertSameSuggestions( 6372f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert String message, SuggestionCursor expected, SuggestionCursor observed) { 645229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood assertNotNull(message + ", expected == null", expected); 65b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert assertNotNull(message + ", observed == null", observed); 668749e77dddec9e7984ee86a7be6f5ba4fce44362Bjorn Bringert assertEquals(message + ", count", expected.getCount(), observed.getCount()); 6772f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert assertEquals(message + ", userQuery", expected.getUserQuery(), observed.getUserQuery()); 6872f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert int count = expected.getCount(); 6972f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert for (int i = 0; i < count; i++) { 7072f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert assertSameSuggestion(message, i, expected, observed); 7172f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert } 7272f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert } 7372f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert 74b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public static void assertSameSuggestionsNoOrder(SuggestionCursor expected, 75b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert SuggestionCursor observed) { 76b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert assertSameSuggestionsNoOrder("", expected, observed); 77b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 78b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 79b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public static void assertSameSuggestionsNoOrder(String message, 80b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert SuggestionCursor expected, SuggestionCursor observed) { 81b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert for (Suggestion expectedSuggestion : iterable(expected)) { 82b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert assertContainsSuggestion(expectedSuggestion, observed); 83b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 84b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert for (Suggestion observedSuggestion : iterable(observed)) { 85b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert assertContainsSuggestion(observedSuggestion, expected); 86b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 87b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 88b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 89b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public static void assertContainsSuggestion(Suggestion expected, SuggestionCursor observed) { 90b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert for (Suggestion observedSuggestion : iterable(observed)) { 91b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert if (checkSuggestionEquals(expected, observedSuggestion)) { 92b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return; 93b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 94b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 95b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert fail(expected + " not found in " + observed); 96b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 97b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 98b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public static Iterable<Suggestion> iterable(final SuggestionCursor cursor) { 99b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return new Iterable<Suggestion>() { 100b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert @Override 101b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public Iterator<Suggestion> iterator() { 102b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return SuggestionCursorUtil.iterator(cursor); 103b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 104b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert }; 105b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 106b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 107b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public static UnmodifiableIterator<Suggestion> iterator(final SuggestionCursor cursor) { 108b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return new UnmodifiableIterator<Suggestion>() { 109b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert private int mPos = 0; 110b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 111b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert @Override 112b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public boolean hasNext() { 113b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return cursor.getPosition() < cursor.getCount() - 1; 114b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 115b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert @Override 116b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public Suggestion next() { 117b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert if (!hasNext()) { 118b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert throw new NoSuchElementException(); 119b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 120b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert mPos++; 121b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return new SuggestionPosition(cursor, mPos); 122b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 123b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert }; 124b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 125b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 1268749e77dddec9e7984ee86a7be6f5ba4fce44362Bjorn Bringert public static ListSuggestionCursor slice(SuggestionCursor cursor, int start) { 1278749e77dddec9e7984ee86a7be6f5ba4fce44362Bjorn Bringert return slice(cursor, start, cursor.getCount() - start); 1288749e77dddec9e7984ee86a7be6f5ba4fce44362Bjorn Bringert } 1298749e77dddec9e7984ee86a7be6f5ba4fce44362Bjorn Bringert 1306d5cbd67f7a5f824babb5c892b0f30bfd9f4ff23Bjorn Bringert public static ListSuggestionCursor slice(SuggestionCursor cursor, int start, int length) { 1316d5cbd67f7a5f824babb5c892b0f30bfd9f4ff23Bjorn Bringert ListSuggestionCursor out = new ListSuggestionCursor(cursor.getUserQuery()); 1326d5cbd67f7a5f824babb5c892b0f30bfd9f4ff23Bjorn Bringert for (int i = start; i < start + length; i++) { 1336d5cbd67f7a5f824babb5c892b0f30bfd9f4ff23Bjorn Bringert out.add(new SuggestionPosition(cursor, i)); 1346d5cbd67f7a5f824babb5c892b0f30bfd9f4ff23Bjorn Bringert } 1356d5cbd67f7a5f824babb5c892b0f30bfd9f4ff23Bjorn Bringert return out; 1366d5cbd67f7a5f824babb5c892b0f30bfd9f4ff23Bjorn Bringert } 13708ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert 138b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public static ListSuggestionCursor concat(SuggestionCursor... cursors) { 139b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert ListSuggestionCursor out = new ListSuggestionCursor(cursors[0].getUserQuery()); 140b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert for (SuggestionCursor cursor : cursors) { 141b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert for (int i = 0; i < cursor.getCount(); i++) { 142b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert out.add(new SuggestionPosition(cursor, i)); 143b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 144b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 145b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return out; 146b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 147b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 14808ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert public static void assertSuggestionEquals(Suggestion expected, Suggestion observed) { 14908ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertSuggestionEquals(null, expected, observed); 15008ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert } 15108ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert 15208ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert public static void assertSuggestionEquals(String message, Suggestion expected, 15308ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert Suggestion observed) { 15408ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "source", expected.getSuggestionSource(), 15508ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionSource()); 15608ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "shortcutId", expected.getShortcutId(), 15708ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getShortcutId()); 15808ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "spinnerWhileRefreshing", expected.isSpinnerWhileRefreshing(), 15908ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.isSpinnerWhileRefreshing()); 16008ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "format", expected.getSuggestionFormat(), 16108ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionFormat()); 16208ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "icon1", expected.getSuggestionIcon1(), 16308ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionIcon1()); 16408ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "icon2", expected.getSuggestionIcon2(), 16508ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionIcon2()); 16608ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "text1", expected.getSuggestionText1(), 16708ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionText1()); 16808ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "text2", expected.getSuggestionText2(), 16908ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionText2()); 17008ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "text2Url", expected.getSuggestionText2Url(), 17108ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionText2Url()); 17208ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "action", expected.getSuggestionIntentAction(), 17308ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionIntentAction()); 17408ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "data", expected.getSuggestionIntentDataString(), 17508ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionIntentDataString()); 17608ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "extraData", expected.getSuggestionIntentExtraData(), 17708ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionIntentExtraData()); 17808ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "query", expected.getSuggestionQuery(), 17908ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionQuery()); 18008ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertFieldEquals(message, "logType", expected.getSuggestionLogType(), 18108ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert observed.getSuggestionLogType()); 18208ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert } 18308ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert 18408ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert private static void assertFieldEquals(String message, String field, 18508ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert Object expected, Object observed) { 18608ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert String msg = (message == null) ? field : message + ", " + field; 18708ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert assertEquals(msg, expected, observed); 18808ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert } 18908ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert 19008ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert public static void addAll(ListSuggestionCursor to, SuggestionCursor from) { 19108ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert if (from == null) return; 19208ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert int count = from.getCount(); 19308ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert for (int i = 0; i < count; i++) { 19408ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert to.add(new SuggestionPosition(from, i)); 19508ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert } 19608ff0a7cb6b99db79508fa3124730eb81411bc56Bjorn Bringert } 197b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 198b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert public static boolean checkSuggestionEquals(Suggestion expected, Suggestion observed) { 199b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert return equal(expected.getSuggestionSource(), observed.getSuggestionSource()) 200b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getShortcutId(), observed.getShortcutId()) 201b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.isSpinnerWhileRefreshing(), observed.isSpinnerWhileRefreshing()) 202b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionFormat(), observed.getSuggestionFormat()) 203b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionIcon1(), observed.getSuggestionIcon1()) 204b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionIcon2(), observed.getSuggestionIcon2()) 205b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionText1(), observed.getSuggestionText1()) 206b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionText2(), observed.getSuggestionText2()) 207b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionText2Url(), observed.getSuggestionText2Url()) 208b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionIntentAction(), observed.getSuggestionIntentAction()) 209b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionIntentDataString(), observed.getSuggestionIntentDataString()) 210b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionIntentExtraData(), observed.getSuggestionIntentExtraData()) 211b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionQuery(), observed.getSuggestionQuery()) 212b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert && equal(expected.getSuggestionLogType(), observed.getSuggestionLogType()); 213b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert } 214b83882b9efa37ec0f20a0f1c85cf5ccc93194aeeBjorn Bringert 2155229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood public static void assertSuggestionExtras(String message, SuggestionCursor observed, 2165229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood String extraColumn, Object expectedExtra) { 2175229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood assertNotNull(message + ", observed == null", observed); 2185229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood assertTrue(message + ", no suggestions", observed.getCount() > 0); 2195229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood for (int i = 0; i < observed.getCount(); ++i) { 2205229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood observed.moveTo(i); 2215229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood SuggestionExtras extras = observed.getExtras(); 2225229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood assertNotNull(message + ", no extras at position " + i, extras); 2235229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood Collection<String> columns = extras.getExtraColumnNames(); 2245229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood assertNotNull(message + ", extras columns is null at position " + i, columns); 2255229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood assertTrue(message + ", column '" + extraColumn + 2265229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood "' not reported by extras at position " + i, columns.contains(extraColumn)); 2275229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood Object extra = extras.getExtra(extraColumn); 2285229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood assertEquals(message + ", extra value", expectedExtra == null ? null : 2295229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood expectedExtra.toString(), extra); 2305229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood } 2315229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood } 2325229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood 23372f9b08ce84d0e13daf2d1c112d4e6d1d3ada045Bjorn Bringert} 234