blob: c40dca108efbeacb3db39ec5a3c16c270fd6cfd1 [file] [edit]
// Copyright 2024 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/moqt_messages.h"
#include <optional>
#include "quiche/common/platform/api/quiche_test.h"
namespace moqt::test {
namespace {
TEST(MoqtMessagesTest, MoqtDatagramType) {
for (bool payload : {false, true}) {
for (bool extension : {false, true}) {
for (bool end_of_group : {false, true}) {
for (bool default_priority : {false, true}) {
for (bool zero_object_id : {false, true}) {
MoqtDatagramType type(payload, extension, end_of_group,
default_priority, zero_object_id);
EXPECT_EQ(type.has_status(),
!payload && (!end_of_group || !zero_object_id));
EXPECT_EQ(type.has_extension(), extension);
EXPECT_EQ(type.end_of_group(),
end_of_group && (payload || zero_object_id));
EXPECT_EQ(type.has_object_id(),
!zero_object_id || (!payload && !end_of_group));
// The constructor should always produce a valid value.
std::optional<MoqtDatagramType> from_value =
MoqtDatagramType::FromValue(type.value());
EXPECT_TRUE(from_value.has_value() && type == *from_value);
}
}
}
}
}
}
} // namespace
} // namespace moqt::test