1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_STORAGE_TEST_RUNNER_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_STORAGE_TEST_RUNNER_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "third_party/libaddressinput/src/cpp/include/libaddressinput/storage.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string>
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/basictypes.h"
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h"
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace autofill {
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// A test sutie for ::i18n::addressinput::Storage.
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass StorageTestRunner {
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Does not take ownership of |storage|.
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  explicit StorageTestRunner(::i18n::addressinput::Storage* storage);
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ~StorageTestRunner();
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Runs all the tests from the standard test suite.
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void RunAllTests();
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void ClearValues();
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  scoped_ptr< ::i18n::addressinput::Storage::Callback> BuildCallback();
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void OnDataReady(bool success, const std::string& key, std::string* data);
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Test suite.
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void GetWithoutPutReturnsEmptyData();
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void GetReturnsWhatWasPut();
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void SecondPutOverwritesData();
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ::i18n::addressinput::Storage* storage_;  // weak
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool success_;
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  std::string key_;
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  std::string data_;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(StorageTestRunner);
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace autofill
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_STORAGE_TEST_RUNNER_H_
48