// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/dbus/common/dbus_library_error.h"
#include <dbus/dbus-protocol.h>
#include <string>
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
// POD struct for DBusLibraryErrorTest.
struct DBusLibraryErrorTestParams {
std::string dbus_error_in;
DBusLibraryError expected_error_out;
};
class DBusLibraryErrorTest
: public testing::Test,
public testing::WithParamInterface<DBusLibraryErrorTestParams> {
public:
DBusLibraryErrorTest() = default;
DBusLibraryErrorTest(const DBusLibraryErrorTest&) = delete;
DBusLibraryErrorTest& operator=(const DBusLibraryErrorTest&) = delete;
DBusLibraryErrorTestParams params() const { return GetParam(); }
};
TEST_P(DBusLibraryErrorTest, DBusLibraryErrorFromString) {
DBusLibraryError actual_error_out =
DBusLibraryErrorFromString(params().dbus_error_in);
EXPECT_EQ(params().expected_error_out, actual_error_out);
}
INSTANTIATE_TEST_SUITE_P(
,
DBusLibraryErrorTest,
testing::Values(
DBusLibraryErrorTestParams{
/*dbus_error_in=*/DBUS_ERROR_NO_REPLY,
/*expected_error_out=*/DBusLibraryError::kNoReply},
DBusLibraryErrorTestParams{
/*dbus_error_in=*/DBUS_ERROR_TIMEOUT,
/*expected_error_out=*/DBusLibraryError::kTimeout},
DBusLibraryErrorTestParams{
/*dbus_error_in=*/"Nonstandard error message",
/*expected_error_out=*/DBusLibraryError::kGenericError}));
} // namespace chromeos