blob: dcf1ce6daa35c0f979998d5c0e7d48f6eb755a4a [file] [log] [blame]
// Copyright 2021 The Chromium 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 "chrome/common/privacy_budget/order_preserving_set.h"
#include <vector>
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
TEST(OrderPreservingSetTest, CanInstantiate) {
OrderPreservingSet<blink::IdentifiableSurface> default_initialized;
EXPECT_TRUE(default_initialized.empty());
std::vector<blink::IdentifiableSurface> surfaces_list;
OrderPreservingSet<blink::IdentifiableSurface> initialized_with_list(
std::move(surfaces_list));
EXPECT_TRUE(initialized_with_list.empty());
OrderPreservingSet<blink::IdentifiableSurface> initialized_with_initializers{
blink::IdentifiableSurface::FromMetricHash(1)};
EXPECT_FALSE(initialized_with_initializers.empty());
EXPECT_EQ(1u, initialized_with_initializers[0].ToUkmMetricHash());
}
TEST(OrderPreservingSetTest, CanMoveAssign) {
std::vector<blink::IdentifiableSurface> surfaces_list = {
blink::IdentifiableSurface::FromMetricHash(3), // not in order.
blink::IdentifiableSurface::FromMetricHash(1),
blink::IdentifiableSurface::FromMetricHash(2),
};
OrderPreservingSet<blink::IdentifiableSurface> surface_set;
surface_set = std::move(surfaces_list);
EXPECT_EQ(3u, surface_set[0].ToUkmMetricHash());
EXPECT_EQ(1u, surface_set[1].ToUkmMetricHash());
EXPECT_EQ(2u, surface_set[2].ToUkmMetricHash());
}
TEST(OrderPreservingSetTest, IteratorsPreserveOrder) {
OrderPreservingSet<blink::IdentifiableSurface> surface_set{
blink::IdentifiableSurface::FromMetricHash(3), // not in order.
blink::IdentifiableSurface::FromMetricHash(1),
blink::IdentifiableSurface::FromMetricHash(2),
};
std::vector<blink::IdentifiableSurface> seen;
for (const auto v : surface_set) {
seen.push_back(v);
}
EXPECT_EQ(3u, surface_set[0].ToUkmMetricHash());
EXPECT_EQ(1u, surface_set[1].ToUkmMetricHash());
EXPECT_EQ(2u, surface_set[2].ToUkmMetricHash());
}
TEST(OrderPreservingSetTest, LookupsWork) {
OrderPreservingSet<blink::IdentifiableSurface> surface_set{
blink::IdentifiableSurface::FromMetricHash(3), // not in order.
blink::IdentifiableSurface::FromMetricHash(1),
blink::IdentifiableSurface::FromMetricHash(2),
};
EXPECT_TRUE(
surface_set.contains(blink::IdentifiableSurface::FromMetricHash(3)));
EXPECT_FALSE(
surface_set.contains(blink::IdentifiableSurface::FromMetricHash(4)));
}