blob: 42ff97807f7c20131449ab6cbfebd1c2562171bc [file] [log] [blame]
// Copyright 2021 The Fuchsia 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 "expiring_set.h"
#include <gtest/gtest.h>
#include "lib/gtest/test_loop_fixture.h"
#include "src/connectivity/bluetooth/core/bt-host/common/test_helpers.h"
namespace bt {
namespace {
zx::time now() { return async::Now(async_get_default_dispatcher()); }
using ExpiringSetTest = ::gtest::TestLoopFixture;
TEST_F(ExpiringSetTest, Expiration) {
ExpiringSet<std::string> set;
set.add_until("Expired", now() - zx::msec(1));
EXPECT_FALSE(set.contains("Expired"));
set.add_until("Just a minute", now() + zx::min(1));
set.add_until("Two minutes", now() + zx::min(2));
EXPECT_TRUE(set.contains("Just a minute"));
EXPECT_TRUE(set.contains("Two minutes"));
RunLoopFor(zx::sec(1));
EXPECT_TRUE(set.contains("Just a minute"));
EXPECT_TRUE(set.contains("Two minutes"));
RunLoopFor(zx::min(1));
EXPECT_FALSE(set.contains("Just a minute"));
EXPECT_TRUE(set.contains("Two minutes"));
RunLoopFor(zx::min(1));
EXPECT_FALSE(set.contains("Just a minute"));
EXPECT_FALSE(set.contains("Two minutes"));
}
TEST_F(ExpiringSetTest, Remove) {
ExpiringSet<std::string> set;
set.add_until("Expired", now() - zx::msec(1));
EXPECT_FALSE(set.contains("Expired"));
set.remove("Expired");
set.add_until("Temporary", now() + zx::sec(1000));
EXPECT_TRUE(set.contains("Temporary"));
set.remove("Temporary");
EXPECT_FALSE(set.contains("Temporary"));
}
} // namespace
} // namespace bt