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#include "components/omnibox/search_suggestion_parser.h"
6
7#include "base/json/json_reader.h"
8#include "base/memory/scoped_ptr.h"
9#include "base/values.h"
10#include "testing/gtest/include/gtest/gtest.h"
11#include "url/gurl.h"
12
13namespace {
14
15scoped_ptr<base::DictionaryValue> AsDictionary(const std::string& json) {
16  base::Value* value = base::JSONReader::Read(json);
17  base::DictionaryValue* dict;
18  if (value && value->GetAsDictionary(&dict))
19    return scoped_ptr<base::DictionaryValue>(dict);
20
21  delete value;
22  return scoped_ptr<base::DictionaryValue>(new base::DictionaryValue);
23}
24
25}  // namespace
26
27TEST(SearchSuggestionParser, GetAnswersImageURLsWithoutImagelines) {
28  std::vector<GURL> urls;
29
30  // No "l" entry in the dictionary.
31  SearchSuggestionParser::GetAnswersImageURLs(AsDictionary("").get(), &urls);
32  EXPECT_TRUE(urls.empty());
33
34  // Empty "l" entry in the dictionary.
35  SearchSuggestionParser::GetAnswersImageURLs(
36      AsDictionary("{ \"l\" : {} } ").get(), &urls);
37  EXPECT_TRUE(urls.empty());
38}
39
40TEST(SearchSuggestionParser, GetAnswersImageURLsWithValidImage) {
41  std::vector<GURL> urls;
42
43  const char answer_json[] =
44      "{ \"l\" : [{\"il\": { \"i\": {\"d\": "
45      "\"//ssl.gstatic.com/foo.png\",\"t\": 3}}}]}";
46  SearchSuggestionParser::GetAnswersImageURLs(AsDictionary(answer_json).get(),
47                                              &urls);
48  ASSERT_EQ(1U, urls.size());
49  EXPECT_EQ("https://ssl.gstatic.com/foo.png", urls[0].spec());
50}
51