blob: 2f229b853f6d9a93ea5bbcad3fce580d780ee5d3 [file] [log] [blame]
// Copyright 2025 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 "quiche/quic/moqt/namespace_tree.h"
#include "quiche/quic/moqt/moqt_messages.h"
#include "quiche/common/platform/api/quiche_test.h"
namespace moqt {
namespace test {
TEST(NamespaceTreeTest, AddNamespaces) {
NamespaceTree tree;
EXPECT_TRUE(tree.AddNamespace(TrackNamespace({"a", "b", "c"})));
// No parents, children, or equivalents of what's already there.
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"a", "b", "c"})));
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"a", "b", "c", "d"})));
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"a", "b"})));
// Siblings are fine.
EXPECT_TRUE(tree.AddNamespace(TrackNamespace({"a", "b", "d"})));
// Totally different root is fine.
EXPECT_TRUE(tree.AddNamespace(TrackNamespace({"b", "c"})));
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"b"})));
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"b", "c", "e"})));
}
TEST(NamespaceTreeTest, RemoveNamespaces) {
NamespaceTree tree;
// Removing from an empty tree doesn't do anything.
tree.RemoveNamespace(TrackNamespace({"a", "b", "c"}));
// RemoveNamespace doesn't do anything if the namespace isn't present.
EXPECT_TRUE(tree.AddNamespace(TrackNamespace({"a", "b", "c"})));
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"a", "b", "c"})));
tree.RemoveNamespace(TrackNamespace({"a", "b", "c"}));
EXPECT_TRUE(tree.AddNamespace(TrackNamespace({"a", "b", "c"})));
tree.RemoveNamespace(TrackNamespace({"a", "b"}));
// Inexact match didn't delete anything.
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"a", "b", "c"})));
tree.RemoveNamespace(TrackNamespace({"a", "b", "c", "d"}));
// Inexact match didn't delete anything..
EXPECT_FALSE(tree.AddNamespace(TrackNamespace({"a", "b", "c"})));
}
} // namespace test
} // namespace moqt