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.
5 #include "sync/api/sync_error.h"
9 #include "base/location.h"
10 #include "testing/gtest/include/gtest/gtest.h"
18 typedef testing::Test SyncErrorTest
;
20 TEST_F(SyncErrorTest
, Unset
) {
22 EXPECT_FALSE(error
.IsSet());
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: ", error
.GetMessagePrefix());
33 EXPECT_EQ(msg
, error
.message());
34 EXPECT_EQ(type
, error
.model_type());
35 EXPECT_EQ(SyncError::SYNC_ERROR_SEVERITY_ERROR
, error
.GetSeverity());
38 TEST_F(SyncErrorTest
, LowSeverity
) {
39 tracked_objects::Location location
= FROM_HERE
;
40 std::string msg
= "test";
41 ModelType type
= PREFERENCES
;
42 SyncError
error(location
, SyncError::DATATYPE_POLICY_ERROR
, msg
, type
);
43 ASSERT_TRUE(error
.IsSet());
44 EXPECT_EQ(location
.line_number(), error
.location().line_number());
45 EXPECT_EQ("disabled due to configuration constraints: ",
46 error
.GetMessagePrefix());
47 EXPECT_EQ(msg
, error
.message());
48 EXPECT_EQ(type
, error
.model_type());
49 EXPECT_EQ(SyncError::SYNC_ERROR_SEVERITY_INFO
, error
.GetSeverity());
52 TEST_F(SyncErrorTest
, Reset
) {
53 tracked_objects::Location location
= FROM_HERE
;
54 std::string msg
= "test";
55 ModelType type
= PREFERENCES
;
58 EXPECT_FALSE(error
.IsSet());
60 error
.Reset(location
, msg
, type
);
61 ASSERT_TRUE(error
.IsSet());
62 EXPECT_EQ(location
.line_number(), error
.location().line_number());
63 EXPECT_EQ(msg
, error
.message());
64 EXPECT_EQ(type
, error
.model_type());
66 tracked_objects::Location location2
= FROM_HERE
;
67 std::string msg2
= "test";
68 ModelType type2
= PREFERENCES
;
69 error
.Reset(location2
, msg2
, type2
);
70 ASSERT_TRUE(error
.IsSet());
71 EXPECT_EQ(location2
.line_number(), error
.location().line_number());
72 EXPECT_EQ(msg2
, error
.message());
73 EXPECT_EQ(type2
, error
.model_type());
76 TEST_F(SyncErrorTest
, Copy
) {
77 tracked_objects::Location location
= FROM_HERE
;
78 std::string msg
= "test";
79 ModelType type
= PREFERENCES
;
82 EXPECT_FALSE(error1
.IsSet());
83 SyncError
error2(error1
);
84 EXPECT_FALSE(error2
.IsSet());
86 error1
.Reset(location
, msg
, type
);
87 ASSERT_TRUE(error1
.IsSet());
88 EXPECT_EQ(location
.line_number(), error1
.location().line_number());
89 EXPECT_EQ(msg
, error1
.message());
90 EXPECT_EQ(type
, error1
.model_type());
92 SyncError
error3(error1
);
93 ASSERT_TRUE(error3
.IsSet());
94 EXPECT_EQ(error1
.location().line_number(), error3
.location().line_number());
95 EXPECT_EQ(error1
.message(), error3
.message());
96 EXPECT_EQ(error1
.model_type(), error3
.model_type());
99 EXPECT_FALSE(error4
.IsSet());
100 SyncError
error5(error4
);
101 EXPECT_FALSE(error5
.IsSet());
104 TEST_F(SyncErrorTest
, Assign
) {
105 tracked_objects::Location location
= FROM_HERE
;
106 std::string msg
= "test";
107 ModelType type
= PREFERENCES
;
110 EXPECT_FALSE(error1
.IsSet());
113 EXPECT_FALSE(error2
.IsSet());
115 error1
.Reset(location
, msg
, type
);
116 ASSERT_TRUE(error1
.IsSet());
117 EXPECT_EQ(location
.line_number(), error1
.location().line_number());
118 EXPECT_EQ(msg
, error1
.message());
119 EXPECT_EQ(type
, error1
.model_type());
122 ASSERT_TRUE(error2
.IsSet());
123 EXPECT_EQ(error1
.location().line_number(), error2
.location().line_number());
124 EXPECT_EQ(error1
.message(), error2
.message());
125 EXPECT_EQ(error1
.model_type(), error2
.model_type());
127 error2
= SyncError();
128 EXPECT_FALSE(error2
.IsSet());
131 TEST_F(SyncErrorTest
, ToString
) {
132 tracked_objects::Location location
= FROM_HERE
;
133 std::string msg
= "test";
134 ModelType type
= PREFERENCES
;
135 std::string expected
= std::string(ModelTypeToString(type
)) +
136 " datatype error was encountered: " + msg
;
137 LOG(INFO
) << "Expect " << expected
;
138 SyncError
error(location
, SyncError::DATATYPE_ERROR
, msg
, type
);
139 EXPECT_TRUE(error
.IsSet());
140 EXPECT_NE(string::npos
, error
.ToString().find(expected
));
143 EXPECT_FALSE(error2
.IsSet());
144 EXPECT_EQ(std::string(), error2
.ToString());
147 EXPECT_TRUE(error2
.IsSet());
148 EXPECT_NE(string::npos
, error
.ToString().find(expected
));
153 } // namespace syncer