blob: baa701acbf9ff05ec227dd8e846c806fedcae8c2 [file] [log] [blame] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "missive/analytics/metrics.h"
#include <base/test/task_environment.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "missive/analytics/metrics_test_util.h"
namespace reporting::analytics {
class MetricsTest : public ::testing::Test {
protected:
base::test::TaskEnvironment task_environment_;
Metrics::TestEnvironment metrics_test_environment_;
};
TEST_F(MetricsTest, SendToUMA) {
static constexpr const char* kName = "test";
static constexpr int sample = 10;
static constexpr int min = 0;
static constexpr int max = 20;
static constexpr int nbuckets = 50;
EXPECT_CALL(Metrics::TestEnvironment::GetMockMetricsLibrary(),
SendToUMA(kName, sample, min, max, nbuckets))
.Times(1);
Metrics::SendToUMA(kName, sample, min, max, nbuckets);
task_environment_.RunUntilIdle();
}
TEST_F(MetricsTest, SendBoolToUMA) {
static constexpr const char* kName = "test";
static constexpr bool sample = true;
EXPECT_CALL(Metrics::TestEnvironment::GetMockMetricsLibrary(),
SendBoolToUMA(kName, sample))
.Times(1);
Metrics::SendBoolToUMA(kName, sample);
task_environment_.RunUntilIdle();
}
TEST_F(MetricsTest, SendSparseToUMA) {
static constexpr const char* kName = "test";
static constexpr int sample = 12345;
EXPECT_CALL(Metrics::TestEnvironment::GetMockMetricsLibrary(),
SendSparseToUMA(kName, sample))
.Times(1);
Metrics::SendSparseToUMA(kName, sample);
task_environment_.RunUntilIdle();
}
TEST_F(MetricsTest, SendEnumToUMA) {
enum Test {
Unknown = 0,
Innermost,
Inner,
Outer,
Outermost,
};
static constexpr const char* kName = "test";
static constexpr Test sample = Test::Inner;
static constexpr int kExclusiveMax = static_cast<int>(Test::Outermost) + 1;
EXPECT_CALL(Metrics::TestEnvironment::GetMockMetricsLibrary(),
SendEnumToUMA(kName, static_cast<int>(sample), kExclusiveMax))
.Times(1);
Metrics::SendEnumToUMA(kName, static_cast<int>(sample), kExclusiveMax);
task_environment_.RunUntilIdle();
}
TEST_F(MetricsTest, SendEnumToUMAEnumVariant) {
enum class Test {
Unknown = 0,
Innermost,
Inner,
Outer,
Outermost,
kMaxValue
};
static constexpr const char* kName = "test";
static constexpr Test sample = Test::Inner;
EXPECT_CALL(Metrics::TestEnvironment::GetMockMetricsLibrary(),
SendEnumToUMA(kName, static_cast<int>(sample),
static_cast<int>(Test::kMaxValue)))
.Times(1);
Metrics::SendEnumToUMA(kName, sample);
task_environment_.RunUntilIdle();
}
TEST_F(MetricsTest, SendLinearToUMA) {
static constexpr const char* kName = "test";
static constexpr int sample = 30;
static constexpr int max = 50;
EXPECT_CALL(Metrics::TestEnvironment::GetMockMetricsLibrary(),
SendLinearToUMA(kName, sample, max))
.Times(1);
Metrics::SendLinearToUMA(kName, sample, max);
task_environment_.RunUntilIdle();
}
TEST_F(MetricsTest, SendPercentageToUMA) {
static constexpr const char* kName = "test";
static constexpr int sample = 30;
EXPECT_CALL(Metrics::TestEnvironment::GetMockMetricsLibrary(),
SendPercentageToUMA(kName, sample))
.Times(1);
Metrics::SendPercentageToUMA(kName, sample);
task_environment_.RunUntilIdle();
}
} // namespace reporting::analytics