blob: 2fd7e0b9d161967290a2c4dee153d38b2a6f0e9c [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <tuple>
#include <gtest/gtest.h>
#include "diagnostics/wilco_dtc_supportd/telemetry/ec_service.h"
#include "diagnostics/wilco_dtc_supportd/telemetry/ec_service_test_utils.h"
namespace diagnostics {
namespace {
using EcEvent = EcService::EcEvent;
using EcEventReason = EcService::EcEvent::Reason;
// Tests for ec_event_test_utils.
//
// This is a parametrized test with the following parameters:
// * |ec_event_reason| - the expected reason of the EC event.
// * |expected_ec_event| - the expected EC event.
class EcEventTestUtilsTest
: public testing::Test,
public testing::WithParamInterface<std::tuple<EcEventReason, EcEvent>> {
protected:
EcEventReason ec_event_reason() const { return std::get<0>(GetParam()); }
const EcEvent& expected_ec_event() const { return std::get<1>(GetParam()); }
};
// Tests the conversion from 16-bit payload to little-endian 8-bit payload is
// successful
TEST(ConvertDataInWordsToString, ConvertDataInWordsToString0) {
constexpr char kPayload[] =
"\x02\x01\x14\x13\x26\x25\x38\x37\x4a\x49\x5c\x5b";
constexpr uint16_t kPayloadInWords[] = {0x0102, 0x1314, 0x2526,
0x3738, 0x494a, 0x5b5c};
EXPECT_EQ(ConvertDataInWordsToString(kPayloadInWords, 6), kPayload);
}
// Tests that GetEcEventWithReason returns the expected EC event given the
// associated EcEvent::Reason.
TEST_P(EcEventTestUtilsTest, GetEcEventWithReason) {
EXPECT_EQ(GetEcEventWithReason(ec_event_reason()), expected_ec_event());
}
INSTANTIATE_TEST_SUITE_P(
GetEcEventWithReason,
EcEventTestUtilsTest,
testing::Values(
std::make_tuple(EcEventReason::kNonWilcoCharger,
kEcEventNonWilcoCharger),
std::make_tuple(EcEventReason::kLowPowerCharger,
kEcEventLowPowerCharger),
std::make_tuple(EcEventReason::kBatteryAuth, kEcEventBatteryAuth),
std::make_tuple(EcEventReason::kDockDisplay, kEcEventDockDisplay),
std::make_tuple(EcEventReason::kDockThunderbolt,
kEcEventDockThunderbolt),
std::make_tuple(EcEventReason::kIncompatibleDock,
kEcEventIncompatibleDock),
std::make_tuple(EcEventReason::kDockError, kEcEventDockError),
std::make_tuple(EcEventReason::kSysNotification,
kEcEventAcAdapterNoFlags),
std::make_tuple(EcEventReason::kNonSysNotification,
kEcEventNonSysNotification)));
} // namespace
} // namespace diagnostics