- add sources.
[platform/framework/web/crosswalk.git] / src / sync / api / sync_error_unittest.cc
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 #include "sync/api/sync_error.h"
6
7 #include <string>
8
9 #include "base/location.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace syncer {
13
14 namespace {
15
16 using std::string;
17
18 typedef testing::Test SyncErrorTest;
19
20 TEST_F(SyncErrorTest, Unset) {
21   SyncError error;
22   EXPECT_FALSE(error.IsSet());
23 }
24
25 TEST_F(SyncErrorTest, Default) {
26   tracked_objects::Location location = FROM_HERE;
27   std::string msg = "test";
28   ModelType type = PREFERENCES;
29   SyncError error(location, SyncError::DATATYPE_ERROR, msg, type);
30   ASSERT_TRUE(error.IsSet());
31   EXPECT_EQ(location.line_number(), error.location().line_number());
32   EXPECT_EQ("datatype error was encountered: " + msg, error.message());
33   EXPECT_EQ(type, error.model_type());
34 }
35
36 TEST_F(SyncErrorTest, Reset) {
37   tracked_objects::Location location = FROM_HERE;
38   std::string msg = "test";
39   ModelType type = PREFERENCES;
40
41   SyncError error;
42   EXPECT_FALSE(error.IsSet());
43
44   error.Reset(location, msg, type);
45   ASSERT_TRUE(error.IsSet());
46   EXPECT_EQ(location.line_number(), error.location().line_number());
47   EXPECT_EQ(msg, error.message());
48   EXPECT_EQ(type, error.model_type());
49
50   tracked_objects::Location location2 = FROM_HERE;
51   std::string msg2 = "test";
52   ModelType type2 = PREFERENCES;
53   error.Reset(location2, msg2, type2);
54   ASSERT_TRUE(error.IsSet());
55   EXPECT_EQ(location2.line_number(), error.location().line_number());
56   EXPECT_EQ(msg2, error.message());
57   EXPECT_EQ(type2, error.model_type());
58 }
59
60 TEST_F(SyncErrorTest, Copy) {
61   tracked_objects::Location location = FROM_HERE;
62   std::string msg = "test";
63   ModelType type = PREFERENCES;
64
65   SyncError error1;
66   EXPECT_FALSE(error1.IsSet());
67   SyncError error2(error1);
68   EXPECT_FALSE(error2.IsSet());
69
70   error1.Reset(location, msg, type);
71   ASSERT_TRUE(error1.IsSet());
72   EXPECT_EQ(location.line_number(), error1.location().line_number());
73   EXPECT_EQ(msg, error1.message());
74   EXPECT_EQ(type, error1.model_type());
75
76   SyncError error3(error1);
77   ASSERT_TRUE(error3.IsSet());
78   EXPECT_EQ(error1.location().line_number(), error3.location().line_number());
79   EXPECT_EQ(error1.message(), error3.message());
80   EXPECT_EQ(error1.model_type(), error3.model_type());
81
82   SyncError error4;
83   EXPECT_FALSE(error4.IsSet());
84   SyncError error5(error4);
85   EXPECT_FALSE(error5.IsSet());
86 }
87
88 TEST_F(SyncErrorTest, Assign) {
89   tracked_objects::Location location = FROM_HERE;
90   std::string msg = "test";
91   ModelType type = PREFERENCES;
92
93   SyncError error1;
94   EXPECT_FALSE(error1.IsSet());
95   SyncError error2;
96   error2 = error1;
97   EXPECT_FALSE(error2.IsSet());
98
99   error1.Reset(location, msg, type);
100   ASSERT_TRUE(error1.IsSet());
101   EXPECT_EQ(location.line_number(), error1.location().line_number());
102   EXPECT_EQ(msg, error1.message());
103   EXPECT_EQ(type, error1.model_type());
104
105   error2 = error1;
106   ASSERT_TRUE(error2.IsSet());
107   EXPECT_EQ(error1.location().line_number(), error2.location().line_number());
108   EXPECT_EQ(error1.message(), error2.message());
109   EXPECT_EQ(error1.model_type(), error2.model_type());
110
111   error2 = SyncError();
112   EXPECT_FALSE(error2.IsSet());
113 }
114
115 TEST_F(SyncErrorTest, ToString) {
116   tracked_objects::Location location = FROM_HERE;
117   std::string msg = "test";
118   ModelType type = PREFERENCES;
119   std::string expected = std::string(ModelTypeToString(type)) +
120       " datatype error was encountered: " + msg;
121   LOG(INFO) << "Expect " << expected;
122   SyncError error(location, SyncError::DATATYPE_ERROR, msg, type);
123   EXPECT_TRUE(error.IsSet());
124   EXPECT_NE(string::npos, error.ToString().find(expected));
125
126   SyncError error2;
127   EXPECT_FALSE(error2.IsSet());
128   EXPECT_EQ(std::string(), error2.ToString());
129
130   error2 = error;
131   EXPECT_TRUE(error2.IsSet());
132   EXPECT_NE(string::npos, error.ToString().find(expected));
133 }
134
135 }  // namespace
136
137 }  // namespace syncer