blob: aa84dbc6fa0f20dacb705cbd63dec1d401c87d31 [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
7#include <dbus-c++/error.h>
8#include <gtest/gtest.h>
9
10#include "shill/dbus_adaptor.h"
11
12using testing::Test;
13
14namespace shill {
15
16class ErrorTest : public Test {};
17
18TEST_F(ErrorTest, ConstructorDefault) {
19 Error e;
20 EXPECT_EQ(Error::kSuccess, e.type());
21 EXPECT_EQ(Error::GetDefaultMessage(Error::kSuccess), e.message());
22}
23
24TEST_F(ErrorTest, ConstructorDefaultMessage) {
25 Error e(Error::kAlreadyExists);
26 EXPECT_EQ(Error::kAlreadyExists, e.type());
27 EXPECT_EQ(Error::GetDefaultMessage(Error::kAlreadyExists), e.message());
28}
29
30TEST_F(ErrorTest, ConstructorCustomMessage) {
31 static const char kMessage[] = "Custom error message";
32 Error e(Error::kInProgress, kMessage);
33 EXPECT_EQ(Error::kInProgress, e.type());
34 EXPECT_EQ(kMessage, e.message());
35}
36
37TEST_F(ErrorTest, PopulateDefaultMessage) {
38 Error e;
39 e.Populate(Error::kInternalError);
40 EXPECT_EQ(Error::kInternalError, e.type());
41 EXPECT_EQ(Error::GetDefaultMessage(Error::kInternalError), e.message());
42}
43
44TEST_F(ErrorTest, PopulateCustomMessage) {
45 static const char kMessage[] = "Another custom error message";
46 Error e;
47 e.Populate(Error::kInvalidArguments, kMessage);
48 EXPECT_EQ(Error::kInvalidArguments, e.type());
49 EXPECT_EQ(kMessage, e.message());
50}
51
52TEST_F(ErrorTest, ToDBusError) {
53 DBus::Error dbus_error;
54 ASSERT_FALSE(dbus_error.is_set());
Darin Petkovb100ae72011-08-24 16:19:45 -070055 Error().ToDBusError(&dbus_error);
Darin Petkove4c0ace2011-08-24 10:32:46 -070056 ASSERT_FALSE(dbus_error.is_set());
57 static const char kMessage[] = "Test error message";
Darin Petkovb100ae72011-08-24 16:19:45 -070058 Error(Error::kPermissionDenied, kMessage).ToDBusError(&dbus_error);
Darin Petkove4c0ace2011-08-24 10:32:46 -070059 ASSERT_TRUE(dbus_error.is_set());
60 EXPECT_EQ(Error::GetName(Error::kPermissionDenied), dbus_error.name());
61 EXPECT_STREQ(kMessage, dbus_error.message());
62}
63
64TEST_F(ErrorTest, IsSuccessFailure) {
65 EXPECT_TRUE(Error().IsSuccess());
66 EXPECT_FALSE(Error().IsFailure());
67 EXPECT_FALSE(Error(Error::kInvalidNetworkName).IsSuccess());
68 EXPECT_TRUE(Error(Error::kInvalidPassphrase).IsFailure());
69}
70
71TEST_F(ErrorTest, GetName) {
72 EXPECT_EQ(SHILL_INTERFACE ".Error.NotFound",
73 Error::GetName(Error::kNotFound));
74}
75
76TEST_F(ErrorTest, GetDefaultMessage) {
77 // Check the last error code to try to prevent off-by-one bugs when adding or
78 // removing error types.
79 ASSERT_EQ(Error::kPermissionDenied, Error::kNumErrors - 1);
80 EXPECT_EQ("Permission denied",
81 Error::GetDefaultMessage(Error::kPermissionDenied));
82}
83
84} // namespace shill