• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.chrome.browser.omnibox;
6 
7 import android.test.suitebuilder.annotation.SmallTest;
8 
9 import junit.framework.TestCase;
10 
11 public class SuggestionAnswerTest extends TestCase {
12     @SmallTest
testMalformedJsonReturnsNull()13     public void testMalformedJsonReturnsNull() {
14         String json = "} malformed json {";
15         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
16         assertNull(answer);
17     }
18 
19     @SmallTest
testEmpyJsonReturnsNull()20     public void testEmpyJsonReturnsNull() {
21         String json = "";
22         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
23         assertNull(answer);
24     }
25 
26     @SmallTest
testOneLineReturnsNull()27     public void testOneLineReturnsNull() {
28         String json =
29                 "{ 'l': [" +
30                 "  { 'il': { 't': [{ 't': 'text', 'tt': 8 }] } }, " +
31                 "] }";
32         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
33         assertNull(answer);
34     }
35 
36     @SmallTest
testTwoLinesDoesntReturnNull()37     public void testTwoLinesDoesntReturnNull() {
38         String json =
39                 "{ 'l': [" +
40                 "  { 'il': { 't': [{ 't': 'text', 'tt': 8 }] } }, " +
41                 "  { 'il': { 't': [{ 't': 'other text', 'tt': 5 }] } }" +
42                 "] }";
43         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
44         assertNotNull(answer);
45     }
46 
47     @SmallTest
testThreeLinesReturnsNull()48     public void testThreeLinesReturnsNull() {
49         String json =
50                 "{ 'l': [" +
51                 "  { 'il': { 't': [{ 't': 'text', 'tt': 8 }] } }, " +
52                 "  { 'il': { 't': [{ 't': 'other text', 'tt': 5 }] } }" +
53                 "  { 'il': { 't': [{ 't': 'yet more text', 'tt': 13 }] } }" +
54                 "] }";
55         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
56         assertNull(answer);
57     }
58 
59     @SmallTest
testFiveLinesReturnsNull()60     public void testFiveLinesReturnsNull() {
61         String json =
62                 "{ 'l': [" +
63                 "  { 'il': { 't': [{ 't': 'line 1', 'tt': 0 }] } }, " +
64                 "  { 'il': { 't': [{ 't': 'line 2', 'tt': 5 }] } }" +
65                 "  { 'il': { 't': [{ 't': 'line 3', 'tt': 13 }] } }" +
66                 "  { 'il': { 't': [{ 't': 'line 4', 'tt': 14 }] } }" +
67                 "  { 'il': { 't': [{ 't': 'line 5', 'tt': 5 }] } }" +
68                 "] }";
69         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
70         assertNull(answer);
71     }
72 
73     @SmallTest
testPropertyPresence()74     public void testPropertyPresence() {
75         String json =
76                 "{ 'l': [" +
77                 "  { 'il': { 't': [{ 't': 'text', 'tt': 8 }, { 't': 'moar', 'tt': 0 }], " +
78                 "            'i': { 'd': 'http://example.com/foo.jpg' } } }, " +
79                 "  { 'il': { 't': [{ 't': 'other text', 'tt': 5 }], " +
80                 "            'at': { 't': 'slatfotf', 'tt': 42 }, " +
81                 "            'st': { 't': 'oh hi, Mark', 'tt': 7666 } } } " +
82                 "] }";
83         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
84 
85         SuggestionAnswer.ImageLine firstLine = answer.getFirstLine();
86         assertEquals(2, firstLine.getTextFields().size());
87         assertFalse(firstLine.hasAdditionalText());
88         assertFalse(firstLine.hasStatusText());
89         assertTrue(firstLine.hasImage());
90 
91         SuggestionAnswer.ImageLine secondLine = answer.getSecondLine();
92         assertEquals(1, secondLine.getTextFields().size());
93         assertTrue(secondLine.hasAdditionalText());
94         assertTrue(secondLine.hasStatusText());
95         assertFalse(secondLine.hasImage());
96     }
97 
98     @SmallTest
testContents()99     public void testContents() {
100         String json =
101                 "{ 'l': [" +
102                 "  { 'il': { 't': [{ 't': 'text', 'tt': 8 }, { 't': 'moar', 'tt': 0 }], " +
103                 "            'at': { 't': 'hi there', 'tt': 7 } } }, " +
104                 "  { 'il': { 't': [{ 't': 'ftw', 'tt': 6006 }], " +
105                 "            'st': { 't': 'shop S-Mart', 'tt': 666 }, " +
106                 "            'i': { 'd': 'Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGlj' } } } " +
107                 "] }";
108         SuggestionAnswer answer = SuggestionAnswer.parseAnswerContents(json);
109 
110         SuggestionAnswer.ImageLine firstLine = answer.getFirstLine();
111         assertEquals("text", firstLine.getTextFields().get(0).getText());
112         assertEquals(8, firstLine.getTextFields().get(0).getType());
113         assertEquals("moar", firstLine.getTextFields().get(1).getText());
114         assertEquals(0, firstLine.getTextFields().get(1).getType());
115         assertEquals("hi there", firstLine.getAdditionalText().getText());
116         assertEquals(7, firstLine.getAdditionalText().getType());
117 
118         SuggestionAnswer.ImageLine secondLine = answer.getSecondLine();
119         assertEquals("ftw", secondLine.getTextFields().get(0).getText());
120         assertEquals(6006, secondLine.getTextFields().get(0).getType());
121         assertEquals("shop S-Mart", secondLine.getStatusText().getText());
122         assertEquals(666, secondLine.getStatusText().getType());
123         assertEquals("Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGlj", secondLine.getImage());
124     }
125 }
126