1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/performance_manager/public/voting/optional_voting_channel.h"
#include "components/performance_manager/test_support/voting.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace performance_manager {
namespace {
using TestVote = voting::Vote<void, int, 0>;
using TestVotingChannel = voting::VotingChannel<TestVote>;
using TestVotingChannelFactory = voting::VotingChannelFactory<TestVote>;
using TestOptionalVotingChannel = voting::OptionalVotingChannel<TestVote>;
using DummyVoteObserver = voting::test::DummyVoteObserver<TestVote>;
// Some dummy contexts.
const void* kDummyContext1 = reinterpret_cast<const void*>(0xDEADBEEF);
static const char kReason[] = "reason";
} // namespace
TEST(OptionalVotingChannelTest, UpstreamingWorks) {
DummyVoteObserver observer;
TestOptionalVotingChannel voting_channel(observer.BuildVotingChannel());
voting::VoterId<TestVote> voter_id = voting_channel.voter_id();
EXPECT_FALSE(observer.HasVote(voter_id, kDummyContext1));
voting_channel.SubmitVote(kDummyContext1, TestVote(0, kReason));
EXPECT_TRUE(observer.HasVote(voter_id, kDummyContext1));
voting_channel.ChangeVote(kDummyContext1, TestVote(1, kReason));
EXPECT_TRUE(observer.HasVote(voter_id, kDummyContext1, 1, kReason));
voting_channel.ChangeVote(kDummyContext1, TestVote(0, kReason));
EXPECT_TRUE(observer.HasVote(voter_id, kDummyContext1));
voting_channel.InvalidateVote(kDummyContext1);
EXPECT_FALSE(observer.HasVote(voter_id, kDummyContext1));
}
TEST(OptionalVotingChannelTest, OptionalVoteNotUpstreamed) {
DummyVoteObserver observer;
TestOptionalVotingChannel voting_channel(observer.BuildVotingChannel());
voting::VoterId<TestVote> voter_id = voting_channel.voter_id();
EXPECT_FALSE(observer.HasVote(voter_id, kDummyContext1));
voting_channel.SubmitVote(kDummyContext1, std::nullopt);
EXPECT_FALSE(observer.HasVote(voter_id, kDummyContext1));
voting_channel.ChangeVote(kDummyContext1, TestVote(1, kReason));
EXPECT_TRUE(observer.HasVote(voter_id, kDummyContext1, 1, kReason));
voting_channel.ChangeVote(kDummyContext1, std::nullopt);
EXPECT_FALSE(observer.HasVote(voter_id, kDummyContext1));
voting_channel.InvalidateVote(kDummyContext1);
EXPECT_FALSE(observer.HasVote(voter_id, kDummyContext1));
}
} // namespace performance_manager
|