Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / libaddressinput / chromium / storage_test_runner.cc
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 "third_party/libaddressinput/chromium/storage_test_runner.h"
6
7 #include <cassert>
8 #include <cstddef>
9 #include <string>
10
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/callback.h"
13
14 namespace autofill {
15
16 using ::i18n::addressinput::Storage;
17
18 StorageTestRunner::StorageTestRunner(Storage* storage)
19     : storage_(storage),
20       success_(false),
21       key_(),
22       data_() {}
23
24 StorageTestRunner::~StorageTestRunner() {}
25
26 void StorageTestRunner::RunAllTests() {
27   EXPECT_NO_FATAL_FAILURE(GetWithoutPutReturnsEmptyData());
28   EXPECT_NO_FATAL_FAILURE(GetReturnsWhatWasPut());
29   EXPECT_NO_FATAL_FAILURE(SecondPutOverwritesData());
30 }
31
32 void StorageTestRunner::ClearValues() {
33   success_ = false;
34   key_.clear();
35   data_.clear();
36 }
37
38 scoped_ptr<Storage::Callback> StorageTestRunner::BuildCallback() {
39   return scoped_ptr<Storage::Callback>(::i18n::addressinput::BuildCallback(
40       this, &StorageTestRunner::OnDataReady));
41 }
42
43 void StorageTestRunner::OnDataReady(bool success,
44                                     const std::string& key,
45                                     std::string* data) {
46   assert(!success || data != NULL);
47   success_ = success;
48   key_ = key;
49   if (data != NULL) {
50     data_ = *data;
51     delete data;
52   }
53 }
54
55 void StorageTestRunner::GetWithoutPutReturnsEmptyData() {
56   ClearValues();
57   scoped_ptr<Storage::Callback> callback(BuildCallback());
58   storage_->Get("key", *callback);
59
60   EXPECT_FALSE(success_);
61   EXPECT_EQ("key", key_);
62   EXPECT_TRUE(data_.empty());
63 }
64
65 void StorageTestRunner::GetReturnsWhatWasPut() {
66   ClearValues();
67   storage_->Put("key", new std::string("value"));
68   scoped_ptr<Storage::Callback> callback(BuildCallback());
69   storage_->Get("key", *callback);
70
71   EXPECT_TRUE(success_);
72   EXPECT_EQ("key", key_);
73   EXPECT_EQ("value", data_);
74 }
75
76 void StorageTestRunner::SecondPutOverwritesData() {
77   ClearValues();
78   storage_->Put("key", new std::string("bad-value"));
79   storage_->Put("key", new std::string("good-value"));
80   scoped_ptr<Storage::Callback> callback(BuildCallback());
81   storage_->Get("key", *callback);
82
83   EXPECT_TRUE(success_);
84   EXPECT_EQ("key", key_);
85   EXPECT_EQ("good-value", data_);
86 }
87
88 }  // namespace autofill