// 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
