SuggestionCursorUtil.java revision 08ff0a7cb6b99db79508fa3124730eb81411bc56
1/*
2 * Copyright (C) 2010 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
17package com.android.quicksearchbox;
18
19import junit.framework.Assert;
20
21/**
22 * Test utilities for {@link ShortcutCursor}.
23 */
24public class SuggestionCursorUtil extends Assert {
25
26    public static void assertNoSuggestions(SuggestionCursor suggestions) {
27        assertNoSuggestions("", suggestions);
28    }
29
30    public static void assertNoSuggestions(String message, SuggestionCursor suggestions) {
31        assertNotNull(suggestions);
32        assertEquals(message, 0, suggestions.getCount());
33    }
34
35    public static void assertSameSuggestion(String message, int position,
36            SuggestionCursor expected, SuggestionCursor observed) {
37        assertSameSuggestion(message, expected, position, observed, position);
38    }
39
40    public static void assertSameSuggestion(String message,
41            SuggestionCursor expected, int positionExpected,
42            SuggestionCursor observed, int positionObserved) {
43        message +=  " at positions " + positionExpected + "(expected) "
44                + positionObserved + " (observed)";
45        expected.moveTo(positionExpected);
46        observed.moveTo(positionObserved);
47        assertSuggestionEquals(message, expected, observed);
48    }
49
50    public static void assertSameSuggestions(SuggestionCursor expected, SuggestionCursor observed) {
51        assertSameSuggestions("", expected, observed);
52    }
53
54    public static void assertSameSuggestions(
55            String message, SuggestionCursor expected, SuggestionCursor observed) {
56        assertNotNull(expected);
57        assertNotNull(message, observed);
58        assertEquals(message + ", count", expected.getCount(), observed.getCount());
59        assertEquals(message + ", userQuery", expected.getUserQuery(), observed.getUserQuery());
60        int count = expected.getCount();
61        for (int i = 0; i < count; i++) {
62            assertSameSuggestion(message, i, expected, observed);
63        }
64    }
65
66    public static ListSuggestionCursor slice(SuggestionCursor cursor, int start, int length) {
67        ListSuggestionCursor out = new ListSuggestionCursor(cursor.getUserQuery());
68        for (int i = start; i < start + length; i++) {
69            out.add(new SuggestionPosition(cursor, i));
70        }
71        return out;
72    }
73
74    public static void assertSuggestionEquals(Suggestion expected, Suggestion observed) {
75        assertSuggestionEquals(null, expected, observed);
76    }
77
78    public static void assertSuggestionEquals(String message, Suggestion expected,
79            Suggestion observed) {
80        assertFieldEquals(message, "source", expected.getSuggestionSource(),
81                observed.getSuggestionSource());
82        assertFieldEquals(message, "shortcutId", expected.getShortcutId(),
83                observed.getShortcutId());
84        assertFieldEquals(message, "spinnerWhileRefreshing", expected.isSpinnerWhileRefreshing(),
85                observed.isSpinnerWhileRefreshing());
86        assertFieldEquals(message, "format", expected.getSuggestionFormat(),
87                observed.getSuggestionFormat());
88        assertFieldEquals(message, "icon1", expected.getSuggestionIcon1(),
89                observed.getSuggestionIcon1());
90        assertFieldEquals(message, "icon2", expected.getSuggestionIcon2(),
91                observed.getSuggestionIcon2());
92        assertFieldEquals(message, "text1", expected.getSuggestionText1(),
93                observed.getSuggestionText1());
94        assertFieldEquals(message, "text2", expected.getSuggestionText2(),
95                observed.getSuggestionText2());
96        assertFieldEquals(message, "text2Url", expected.getSuggestionText2Url(),
97                observed.getSuggestionText2Url());
98        assertFieldEquals(message, "action", expected.getSuggestionIntentAction(),
99                observed.getSuggestionIntentAction());
100        assertFieldEquals(message, "data", expected.getSuggestionIntentDataString(),
101                observed.getSuggestionIntentDataString());
102        assertFieldEquals(message, "extraData", expected.getSuggestionIntentExtraData(),
103                observed.getSuggestionIntentExtraData());
104        assertFieldEquals(message, "query", expected.getSuggestionQuery(),
105                observed.getSuggestionQuery());
106        assertFieldEquals(message, "logType", expected.getSuggestionLogType(),
107                observed.getSuggestionLogType());
108    }
109
110    private static void assertFieldEquals(String message, String field,
111            Object expected, Object observed) {
112        String msg = (message == null) ? field : message + ", " + field;
113        assertEquals(msg, expected, observed);
114    }
115
116    public static void addAll(ListSuggestionCursor to, SuggestionCursor from) {
117        if (from == null) return;
118        int count = from.getCount();
119        for (int i = 0; i < count; i++) {
120            to.add(new SuggestionPosition(from, i));
121        }
122    }
123}
124