blob: ff784a94582b97b9be7c92f3ba9574ba75c148d0 [file] [log] [blame]
Darin Petkove4c0ace2011-08-24 10:32:46 -07001// Copyright (c) 2011 The Chromium OS 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 "shill/error.h"
6
Paul Stewart71b9ed52014-01-29 08:53:06 -08007#include <chromeos/dbus/service_constants.h>
Darin Petkove4c0ace2011-08-24 10:32:46 -07008#include <dbus-c++/error.h>
9#include <gtest/gtest.h>
10
11#include "shill/dbus_adaptor.h"
12
13using testing::Test;
14
15namespace shill {
16
17class ErrorTest : public Test {};
18
19TEST_F(ErrorTest, ConstructorDefault) {
20 Error e;
21 EXPECT_EQ(Error::kSuccess, e.type());
22 EXPECT_EQ(Error::GetDefaultMessage(Error::kSuccess), e.message());
23}
24
25TEST_F(ErrorTest, ConstructorDefaultMessage) {
26 Error e(Error::kAlreadyExists);
27 EXPECT_EQ(Error::kAlreadyExists, e.type());
28 EXPECT_EQ(Error::GetDefaultMessage(Error::kAlreadyExists), e.message());
29}
30
31TEST_F(ErrorTest, ConstructorCustomMessage) {
32 static const char kMessage[] = "Custom error message";
33 Error e(Error::kInProgress, kMessage);
34 EXPECT_EQ(Error::kInProgress, e.type());
35 EXPECT_EQ(kMessage, e.message());
36}
37
Gaurav Shah1b7a6162011-11-09 11:41:01 -080038TEST_F(ErrorTest, Reset) {
39 Error e(Error::kAlreadyExists);
40 e.Reset();
41 EXPECT_EQ(Error::kSuccess, e.type());
42 EXPECT_EQ(Error::GetDefaultMessage(Error::kSuccess), e.message());
43}
44
Darin Petkove4c0ace2011-08-24 10:32:46 -070045TEST_F(ErrorTest, PopulateDefaultMessage) {
46 Error e;
47 e.Populate(Error::kInternalError);
48 EXPECT_EQ(Error::kInternalError, e.type());
49 EXPECT_EQ(Error::GetDefaultMessage(Error::kInternalError), e.message());
50}
51
52TEST_F(ErrorTest, PopulateCustomMessage) {
53 static const char kMessage[] = "Another custom error message";
54 Error e;
55 e.Populate(Error::kInvalidArguments, kMessage);
56 EXPECT_EQ(Error::kInvalidArguments, e.type());
57 EXPECT_EQ(kMessage, e.message());
58}
59
Darin Petkove5bc2cb2011-12-07 14:47:32 +010060TEST_F(ErrorTest, CopyFrom) {
61 Error e(Error::kInvalidArguments, "Some message");
62 Error copy;
63 copy.CopyFrom(e);
64 EXPECT_EQ(e.type(), copy.type());
65 EXPECT_EQ(e.message(), copy.message());
66}
67
Darin Petkove4c0ace2011-08-24 10:32:46 -070068TEST_F(ErrorTest, ToDBusError) {
69 DBus::Error dbus_error;
70 ASSERT_FALSE(dbus_error.is_set());
Darin Petkovb100ae72011-08-24 16:19:45 -070071 Error().ToDBusError(&dbus_error);
Darin Petkove4c0ace2011-08-24 10:32:46 -070072 ASSERT_FALSE(dbus_error.is_set());
73 static const char kMessage[] = "Test error message";
Darin Petkovb100ae72011-08-24 16:19:45 -070074 Error(Error::kPermissionDenied, kMessage).ToDBusError(&dbus_error);
Darin Petkove4c0ace2011-08-24 10:32:46 -070075 ASSERT_TRUE(dbus_error.is_set());
Paul Stewart71b9ed52014-01-29 08:53:06 -080076 EXPECT_STREQ(kErrorResultPermissionDenied, dbus_error.name());
Darin Petkove4c0ace2011-08-24 10:32:46 -070077 EXPECT_STREQ(kMessage, dbus_error.message());
78}
79
80TEST_F(ErrorTest, IsSuccessFailure) {
81 EXPECT_TRUE(Error().IsSuccess());
82 EXPECT_FALSE(Error().IsFailure());
83 EXPECT_FALSE(Error(Error::kInvalidNetworkName).IsSuccess());
84 EXPECT_TRUE(Error(Error::kInvalidPassphrase).IsFailure());
85}
86
Paul Stewart71b9ed52014-01-29 08:53:06 -080087TEST_F(ErrorTest, GetDBusResult) {
88 // Make sure the Error::Type enum matches up to the Error::Info array.
89 EXPECT_EQ(kErrorResultSuccess, Error::GetDBusResult(Error::kSuccess));
90 EXPECT_EQ(kErrorResultFailure, Error::GetDBusResult(Error::kOperationFailed));
91 EXPECT_EQ(kErrorResultAlreadyConnected,
92 Error::GetDBusResult(Error::kAlreadyConnected));
93 EXPECT_EQ(kErrorResultAlreadyExists,
94 Error::GetDBusResult(Error::kAlreadyExists));
95 EXPECT_EQ(kErrorResultIncorrectPin,
96 Error::GetDBusResult(Error::kIncorrectPin));
97 EXPECT_EQ(kErrorResultInProgress, Error::GetDBusResult(Error::kInProgress));
98 EXPECT_EQ(kErrorResultInternalError,
99 Error::GetDBusResult(Error::kInternalError));
100 EXPECT_EQ(kErrorResultInvalidApn, Error::GetDBusResult(Error::kInvalidApn));
101 EXPECT_EQ(kErrorResultInvalidArguments,
102 Error::GetDBusResult(Error::kInvalidArguments));
103 EXPECT_EQ(kErrorResultInvalidNetworkName,
104 Error::GetDBusResult(Error::kInvalidNetworkName));
105 EXPECT_EQ(kErrorResultInvalidPassphrase,
106 Error::GetDBusResult(Error::kInvalidPassphrase));
107 EXPECT_EQ(kErrorResultInvalidProperty,
108 Error::GetDBusResult(Error::kInvalidProperty));
109 EXPECT_EQ(kErrorResultNoCarrier, Error::GetDBusResult(Error::kNoCarrier));
110 EXPECT_EQ(kErrorResultNotConnected,
111 Error::GetDBusResult(Error::kNotConnected));
112 EXPECT_EQ(kErrorResultNotFound, Error::GetDBusResult(Error::kNotFound));
113 EXPECT_EQ(kErrorResultNotImplemented,
114 Error::GetDBusResult(Error::kNotImplemented));
115 EXPECT_EQ(kErrorResultNotOnHomeNetwork,
116 Error::GetDBusResult(Error::kNotOnHomeNetwork));
117 EXPECT_EQ(kErrorResultNotRegistered,
118 Error::GetDBusResult(Error::kNotRegistered));
119 EXPECT_EQ(kErrorResultNotSupported,
120 Error::GetDBusResult(Error::kNotSupported));
121 EXPECT_EQ(kErrorResultOperationAborted,
122 Error::GetDBusResult(Error::kOperationAborted));
123 EXPECT_EQ(kErrorResultOperationInitiated,
124 Error::GetDBusResult(Error::kOperationInitiated));
125 EXPECT_EQ(kErrorResultOperationTimeout,
126 Error::GetDBusResult(Error::kOperationTimeout));
127 EXPECT_EQ(kErrorResultPassphraseRequired,
128 Error::GetDBusResult(Error::kPassphraseRequired));
129 EXPECT_EQ(kErrorResultPermissionDenied,
130 Error::GetDBusResult(Error::kPermissionDenied));
131 EXPECT_EQ(kErrorResultPinBlocked, Error::GetDBusResult(Error::kPinBlocked));
132 EXPECT_EQ(kErrorResultPinRequired, Error::GetDBusResult(Error::kPinRequired));
133 EXPECT_EQ(kErrorResultWrongState, Error::GetDBusResult(Error::kWrongState));
Darin Petkove4c0ace2011-08-24 10:32:46 -0700134}
135
136TEST_F(ErrorTest, GetDefaultMessage) {
137 // Check the last error code to try to prevent off-by-one bugs when adding or
138 // removing error types.
Paul Stewart71b9ed52014-01-29 08:53:06 -0800139 ASSERT_EQ(Error::kWrongState, Error::kNumErrors - 1);
Darin Petkove4c0ace2011-08-24 10:32:46 -0700140 EXPECT_EQ("Permission denied",
141 Error::GetDefaultMessage(Error::kPermissionDenied));
142}
143
144} // namespace shill