1// Copyright (c) 2012 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#ifndef BASE_TEST_VALUES_TEST_UTIL_H_
6#define BASE_TEST_VALUES_TEST_UTIL_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "base/strings/string_piece.h"
12
13namespace base {
14class DictionaryValue;
15class ListValue;
16class StringValue;
17class Value;
18
19// All the functions below expect that the value for the given key in
20// the given dictionary equals the given expected value.
21
22void ExpectDictBooleanValue(bool expected_value,
23                            const DictionaryValue& value,
24                            const std::string& key);
25
26void ExpectDictDictionaryValue(const DictionaryValue& expected_value,
27                               const DictionaryValue& value,
28                               const std::string& key);
29
30void ExpectDictIntegerValue(int expected_value,
31                            const DictionaryValue& value,
32                            const std::string& key);
33
34void ExpectDictListValue(const ListValue& expected_value,
35                         const DictionaryValue& value,
36                         const std::string& key);
37
38void ExpectDictStringValue(const std::string& expected_value,
39                           const DictionaryValue& value,
40                           const std::string& key);
41
42// Takes ownership of |actual|.
43void ExpectStringValue(const std::string& expected_str,
44                       StringValue* actual);
45
46namespace test {
47
48// Parses |json| as JSON, allowing trailing commas, and returns the
49// resulting value.  If the json fails to parse, causes an EXPECT
50// failure and returns the Null Value (but never a NULL pointer).
51scoped_ptr<Value> ParseJson(base::StringPiece json);
52
53}  // namespace test
54}  // namespace base
55
56#endif  // BASE_TEST_VALUES_TEST_UTIL_H_
57