mirror of
https://github.com/protocolbuffers/protobuf
synced 2026-08-26 02:23:14 -04:00
Hopefully final batch of return value checks before UPB_NODISCARD enforcement
PiperOrigin-RevId: 970967137
This commit is contained in:
parent
b6ca8b9fb1
commit
6a21212800
12 changed files with 236 additions and 187 deletions
|
|
@ -50,6 +50,6 @@ void SetAliasExtension(upb_Message* message, upb_Arena* message_arena,
|
|||
ABSL_CHECK(upb_Arena_IsFused(message_arena, extension_arena) ||
|
||||
upb_Arena_HasRef(message_arena, extension_arena));
|
||||
#endif
|
||||
upb_Message_SetExtension(message, ext, &extension, message_arena);
|
||||
ABSL_CHECK(upb_Message_SetExtension(message, ext, &extension, message_arena));
|
||||
}
|
||||
} // namespace hpb::internal
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ TEST(ArenaTest, ShinkLastAfterReallocHwasanRegression) {
|
|||
};
|
||||
|
||||
upb_Arena* arena = upb_Arena_Init(nullptr, 1000, &upb_alloc_global);
|
||||
(void)upb_Arena_Malloc(arena, 1);
|
||||
EXPECT_NE(upb_Arena_Malloc(arena, 1), nullptr);
|
||||
// Will force a full-size block since the initial allocated block has tons of
|
||||
// free space and the max block size is tiny
|
||||
void* to_realloc = upb_Arena_Malloc(arena, 2000);
|
||||
|
|
@ -225,7 +225,7 @@ class OverheadTest {
|
|||
}
|
||||
|
||||
void Alloc(size_t size) {
|
||||
upb_Arena_Malloc(arena_, size);
|
||||
EXPECT_NE(upb_Arena_Malloc(arena_, size), nullptr);
|
||||
arena_alloced_ += size;
|
||||
arena_alloc_count_++;
|
||||
}
|
||||
|
|
@ -532,7 +532,7 @@ TEST(ArenaTest, MaxBlockSize) {
|
|||
// Perform 600 1k allocations (600k total) and ensure that the amount of
|
||||
// memory allocated does not exceed 700k.
|
||||
for (int i = 0; i < 600; ++i) {
|
||||
upb_Arena_Malloc(arena, 1024);
|
||||
EXPECT_NE(upb_Arena_Malloc(arena, 1024), nullptr);
|
||||
}
|
||||
EXPECT_LE(upb_Arena_SpaceAllocated(arena, nullptr), 700 * 1024);
|
||||
upb_Arena_Free(arena);
|
||||
|
|
|
|||
|
|
@ -52,27 +52,30 @@ void UPB_PRIVATE(_upb_Arena_SwapIn)(struct upb_Arena* des,
|
|||
void UPB_PRIVATE(_upb_Arena_SwapOut)(struct upb_Arena* des,
|
||||
const struct upb_Arena* src);
|
||||
|
||||
UPB_INLINE size_t UPB_PRIVATE(_upb_ArenaHas)(const struct upb_Arena* a) {
|
||||
UPB_NODISCARD UPB_INLINE size_t
|
||||
UPB_PRIVATE(_upb_ArenaHas)(const struct upb_Arena* a) {
|
||||
return (size_t)(a->UPB_ONLYBITS(end) - a->UPB_ONLYBITS(ptr));
|
||||
}
|
||||
|
||||
UPB_INLINE size_t UPB_PRIVATE(_upb_Arena_AllocSpan)(size_t size) {
|
||||
UPB_NODISCARD UPB_INLINE size_t UPB_PRIVATE(_upb_Arena_AllocSpan)(size_t size) {
|
||||
return UPB_ALIGN_MALLOC(size) + UPB_PRIVATE(kUpb_Asan_GuardSize);
|
||||
}
|
||||
|
||||
UPB_INLINE bool UPB_PRIVATE(_upb_Arena_WasLastAllocFromCurrentBlock)(
|
||||
const struct upb_Arena* a, void* ptr, size_t size) {
|
||||
UPB_NODISCARD UPB_INLINE bool UPB_PRIVATE(
|
||||
_upb_Arena_WasLastAllocFromCurrentBlock)(const struct upb_Arena* a,
|
||||
void* ptr, size_t size) {
|
||||
return UPB_PRIVATE(upb_Xsan_PtrEq)(
|
||||
(char*)ptr + UPB_PRIVATE(_upb_Arena_AllocSpan)(size),
|
||||
a->UPB_ONLYBITS(ptr));
|
||||
}
|
||||
|
||||
UPB_INLINE bool UPB_PRIVATE(_upb_Arena_IsAligned)(const void* ptr) {
|
||||
UPB_NODISCARD UPB_INLINE bool UPB_PRIVATE(_upb_Arena_IsAligned)(
|
||||
const void* ptr) {
|
||||
return (uintptr_t)ptr % UPB_MALLOC_ALIGN == 0;
|
||||
}
|
||||
|
||||
UPB_API_INLINE void* _upb_Arena_Malloc_Unchecked(struct upb_Arena* a,
|
||||
size_t size) {
|
||||
UPB_NODISCARD UPB_API_INLINE void* _upb_Arena_Malloc_Unchecked(
|
||||
struct upb_Arena* a, size_t size) {
|
||||
UPB_PRIVATE(upb_Xsan_AccessReadWrite)(UPB_XSAN(a));
|
||||
|
||||
size_t span = UPB_PRIVATE(_upb_Arena_AllocSpan)(size);
|
||||
|
|
@ -91,7 +94,8 @@ UPB_API_INLINE void* _upb_Arena_Malloc_Unchecked(struct upb_Arena* a,
|
|||
return UPB_PRIVATE(upb_Xsan_NewUnpoisonedRegion)(UPB_XSAN(a), ret, size);
|
||||
}
|
||||
|
||||
UPB_API_INLINE void* upb_Arena_Malloc(struct upb_Arena* a, size_t size) {
|
||||
UPB_NODISCARD UPB_API_INLINE void* upb_Arena_Malloc(struct upb_Arena* a,
|
||||
size_t size) {
|
||||
if (!upb_AllocationCount_IncrementAndCheck()) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -120,8 +124,9 @@ UPB_API_INLINE void upb_Arena_ShrinkLast(struct upb_Arena* a, void* ptr,
|
|||
}
|
||||
}
|
||||
|
||||
UPB_API_INLINE bool upb_Arena_TryExtend(struct upb_Arena* a, void* ptr,
|
||||
size_t oldsize, size_t size) {
|
||||
UPB_NODISCARD UPB_API_INLINE bool upb_Arena_TryExtend(struct upb_Arena* a,
|
||||
void* ptr, size_t oldsize,
|
||||
size_t size) {
|
||||
UPB_ASSERT(ptr);
|
||||
UPB_ASSERT(size > oldsize);
|
||||
|
||||
|
|
@ -138,8 +143,9 @@ UPB_API_INLINE bool upb_Arena_TryExtend(struct upb_Arena* a, void* ptr,
|
|||
return false;
|
||||
}
|
||||
|
||||
UPB_API_INLINE void* upb_Arena_Realloc(struct upb_Arena* a, void* ptr,
|
||||
size_t oldsize, size_t size) {
|
||||
UPB_NODISCARD UPB_API_INLINE void* upb_Arena_Realloc(struct upb_Arena* a,
|
||||
void* ptr, size_t oldsize,
|
||||
size_t size) {
|
||||
UPB_PRIVATE(upb_Xsan_AccessReadWrite)(UPB_XSAN(a));
|
||||
|
||||
void* ret;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <gtest/gtest.h>
|
||||
#include "testing/fuzzing/fuzztest.h"
|
||||
#include "absl/base/throw_delegate.h"
|
||||
#include "google/protobuf/util/message_differencer.h"
|
||||
#include "upb/mem/arena.h"
|
||||
#include "upb/message/compare.h"
|
||||
|
|
@ -17,18 +18,36 @@ namespace {
|
|||
|
||||
const upb_ExtensionRegistry* CreateTestExtensionRegistry(upb_Arena* arena) {
|
||||
upb_ExtensionRegistry* ext_registry = upb_ExtensionRegistry_New(arena);
|
||||
upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension1_model_ext_ext);
|
||||
upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_ext);
|
||||
upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_2_ext);
|
||||
upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_3_ext);
|
||||
upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_4_ext);
|
||||
upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_5_ext);
|
||||
if (upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension1_model_ext_ext) !=
|
||||
kUpb_ExtensionRegistryStatus_Ok) {
|
||||
absl::ThrowStdBadAlloc();
|
||||
}
|
||||
if (upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_ext) !=
|
||||
kUpb_ExtensionRegistryStatus_Ok) {
|
||||
absl::ThrowStdBadAlloc();
|
||||
}
|
||||
if (upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_2_ext) !=
|
||||
kUpb_ExtensionRegistryStatus_Ok) {
|
||||
absl::ThrowStdBadAlloc();
|
||||
}
|
||||
if (upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_3_ext) !=
|
||||
kUpb_ExtensionRegistryStatus_Ok) {
|
||||
absl::ThrowStdBadAlloc();
|
||||
}
|
||||
if (upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_4_ext) !=
|
||||
kUpb_ExtensionRegistryStatus_Ok) {
|
||||
absl::ThrowStdBadAlloc();
|
||||
}
|
||||
if (upb_ExtensionRegistry_Add(ext_registry,
|
||||
upb_test_ModelExtension2_model_ext_5_ext) !=
|
||||
kUpb_ExtensionRegistryStatus_Ok) {
|
||||
absl::ThrowStdBadAlloc();
|
||||
}
|
||||
return ext_registry;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -259,9 +259,9 @@ TEST(ConvertTest, ExtensionArrayShallowConversion) {
|
|||
upb_Array_Set(ext_arr, 0, elem_val);
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.array_val = ext_arr;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_repeated_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_field_repeated_msg_ext, &ext_val,
|
||||
arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -302,9 +302,9 @@ TEST(ConvertTest, ExtensionArrayDeepConversion) {
|
|||
upb_Array_Set(ext_arr, 0, elem_val);
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.array_val = ext_arr;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_repeated_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_field_repeated_msg_ext, &ext_val,
|
||||
arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -337,9 +337,9 @@ TEST(ConvertTest, MismatchedExtensionFails) {
|
|||
// Set extension field 1000 to an int32
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 12345;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -565,9 +565,9 @@ TEST(ConvertTest, ConvertExtensions_ScalarMatch) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -594,8 +594,9 @@ TEST(ConvertTest, ConvertExtensions_SingularMessageShallow) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.msg_val = UPB_UPCAST(sub);
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -629,8 +630,9 @@ TEST(ConvertTest, ConvertExtensions_SingularMessageDeep) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.msg_val = UPB_UPCAST(sub);
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -659,9 +661,9 @@ TEST(ConvertTest, ConvertExtensions_RemainsExtension) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* mt = &upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
||||
|
|
@ -688,9 +690,9 @@ TEST(ConvertTest, ConvertExtensions_LookupExtensionInRegistry) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -725,9 +727,9 @@ TEST(ConvertTest, ConvertExtensionToNonExtendable) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -756,9 +758,9 @@ TEST(ConvertTest, ConvertExtensionToExtendableButUnknown) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -792,9 +794,9 @@ TEST(ConvertTest, NonCanonicalToNonCanonical) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -829,9 +831,9 @@ TEST(ConvertTest, NonCanonicalToCanonical) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -846,8 +848,9 @@ TEST(ConvertTest, NonCanonicalToCanonical) {
|
|||
// Convert with registry. It should become a canonical extension.
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg,
|
||||
upb_test_convert_another_ext_field_int32_ext);
|
||||
EXPECT_EQ(upb_ExtensionRegistry_Add(
|
||||
extreg, upb_test_convert_another_ext_field_int32_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, dst_mt, dst_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -873,9 +876,9 @@ TEST(ConvertTest, NonCanonicalToNormalField) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -911,9 +914,9 @@ TEST(ConvertTest, NonCanonicalToUnknownBytes) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1532,8 +1535,8 @@ TEST(ConvertTest, OpenToClosedExtensionEnum) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = upb_test_convert_Proto2EnumMessage_BAR;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_enum_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_enum_ext, &ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1558,8 +1561,8 @@ TEST(ConvertTest, OpenToClosedExtensionEnum_InvalidValue) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 12345; // Invalid value.
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_enum_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_enum_ext, &ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1607,9 +1610,9 @@ TEST(ConvertTest, OpenToClosedExtensionRepeatedEnum) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.array_val = ext_arr;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_enum_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_enum_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1644,9 +1647,9 @@ TEST(ConvertTest, OpenToClosedExtensionRepeatedEnum_InvalidValue) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.array_val = ext_arr;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_enum_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_enum_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1691,9 +1694,9 @@ TEST(ConvertTest, ExtensionToMapMismatch) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 123;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1748,8 +1751,9 @@ TEST(ConvertTest, NonCanonicalMessageToCanonical_SameSchema) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.msg_val = UPB_UPCAST(sub);
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1763,7 +1767,9 @@ TEST(ConvertTest, NonCanonicalMessageToCanonical_SameSchema) {
|
|||
// Convert back to MessageWithExtension with registry.
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_field_msg_ext);
|
||||
EXPECT_EQ(
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_field_msg_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, src_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -1796,8 +1802,9 @@ TEST(ConvertTest, NonCanonicalMessageToCanonical_DiffSchema) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.msg_val = UPB_UPCAST(sub);
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1815,7 +1822,9 @@ TEST(ConvertTest, NonCanonicalMessageToCanonical_DiffSchema) {
|
|||
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_another_ext_field_msg_ext);
|
||||
EXPECT_EQ(upb_ExtensionRegistry_Add(
|
||||
extreg, upb_test_convert_another_ext_field_msg_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, dst_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -1849,8 +1858,9 @@ TEST(ConvertTest, NonCanonicalMessageToNormalField_DiffSchema) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.msg_val = UPB_UPCAST(sub);
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1893,8 +1903,9 @@ TEST(ConvertTest, NonCanonicalMessageToNonCanonical) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.msg_val = UPB_UPCAST(sub);
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_msg_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1934,14 +1945,14 @@ TEST(ConvertTest, NonCanonicalRepeatedInt32ToCanonical) {
|
|||
upb_MessageValue val1, val2;
|
||||
val1.int32_val = 123;
|
||||
val2.int32_val = 456;
|
||||
upb_Array_Append(arr, val1, arena.ptr());
|
||||
upb_Array_Append(arr, val2, arena.ptr());
|
||||
ASSERT_TRUE(upb_Array_Append(arr, val1, arena.ptr()));
|
||||
ASSERT_TRUE(upb_Array_Append(arr, val2, arena.ptr()));
|
||||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.array_val = arr;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -1953,7 +1964,9 @@ TEST(ConvertTest, NonCanonicalRepeatedInt32ToCanonical) {
|
|||
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_repeated_int32_ext);
|
||||
EXPECT_EQ(upb_ExtensionRegistry_Add(extreg,
|
||||
upb_test_convert_ext_repeated_int32_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, src_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -1976,14 +1989,14 @@ TEST(ConvertTest, NonCanonicalRepeatedInt32ToNormalField) {
|
|||
upb_MessageValue val1, val2;
|
||||
val1.int32_val = 123;
|
||||
val2.int32_val = 456;
|
||||
upb_Array_Append(arr, val1, arena.ptr());
|
||||
upb_Array_Append(arr, val2, arena.ptr());
|
||||
ASSERT_TRUE(upb_Array_Append(arr, val1, arena.ptr()));
|
||||
ASSERT_TRUE(upb_Array_Append(arr, val2, arena.ptr()));
|
||||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.array_val = arr;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2019,8 +2032,8 @@ TEST(ConvertTest, NonCanonicalStringToCanonical) {
|
|||
upb_StringView str = upb_StringView_FromString("hello");
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.str_val = str;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_string_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_string_ext, &ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2032,7 +2045,8 @@ TEST(ConvertTest, NonCanonicalStringToCanonical) {
|
|||
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_string_ext);
|
||||
EXPECT_EQ(upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_string_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, src_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -2055,8 +2069,8 @@ TEST(ConvertTest, NonCanonicalStringToNormalField) {
|
|||
upb_StringView str = upb_StringView_FromString("hello");
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.str_val = str;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_string_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_string_ext, &ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2088,8 +2102,8 @@ TEST(ConvertTest, NonCanonicalEnumToCanonical_Valid) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 2; // BAZ
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_enum_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_enum_ext, &ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2101,7 +2115,8 @@ TEST(ConvertTest, NonCanonicalEnumToCanonical_Valid) {
|
|||
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_enum_ext);
|
||||
EXPECT_EQ(upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_enum_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, src_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -2122,8 +2137,8 @@ TEST(ConvertTest, NonCanonicalEnumToCanonical_InvalidClosed) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 99; // Invalid for Proto2EnumMessage.NestedEnum
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_enum_ext,
|
||||
&ext_val, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_enum_ext, &ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2135,7 +2150,8 @@ TEST(ConvertTest, NonCanonicalEnumToCanonical_InvalidClosed) {
|
|||
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_enum_ext);
|
||||
EXPECT_EQ(upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_enum_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, src_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -2162,15 +2178,15 @@ TEST(ConvertTest, NonCanonicalRepeatedEnumToCanonical_Mixed) {
|
|||
val1.int32_val = 1; // BAR
|
||||
val2.int32_val = 99; // Invalid
|
||||
val3.int32_val = 2; // BAZ
|
||||
upb_Array_Append(arr, val1, arena.ptr());
|
||||
upb_Array_Append(arr, val2, arena.ptr());
|
||||
upb_Array_Append(arr, val3, arena.ptr());
|
||||
ASSERT_TRUE(upb_Array_Append(arr, val1, arena.ptr()));
|
||||
ASSERT_TRUE(upb_Array_Append(arr, val2, arena.ptr()));
|
||||
ASSERT_TRUE(upb_Array_Append(arr, val3, arena.ptr()));
|
||||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.array_val = arr;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_enum_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_repeated_enum_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2182,7 +2198,9 @@ TEST(ConvertTest, NonCanonicalRepeatedEnumToCanonical_Mixed) {
|
|||
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_repeated_enum_ext);
|
||||
EXPECT_EQ(
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_repeated_enum_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, src_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
@ -2210,9 +2228,9 @@ TEST(ConvertTest, NonCanonicalInt32ToMap_Incompatible) {
|
|||
|
||||
upb_MessageValue ext_val;
|
||||
ext_val.int32_val = 42;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &ext_val,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&ext_val, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2239,15 +2257,15 @@ TEST(ConvertTest, NonCanonicalMixedToCanonical) {
|
|||
// Set int32 extension (1000).
|
||||
upb_MessageValue val_int32;
|
||||
val_int32.int32_val = 42;
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext, &val_int32,
|
||||
arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(UPB_UPCAST(msg),
|
||||
upb_test_convert_ext_field_int32_ext,
|
||||
&val_int32, arena.ptr()));
|
||||
|
||||
// Set string extension (1004).
|
||||
upb_MessageValue val_str;
|
||||
val_str.str_val = upb_StringView_FromDataAndSize("hello", 5);
|
||||
upb_Message_SetExtension(UPB_UPCAST(msg), upb_test_convert_ext_string_ext,
|
||||
&val_str, arena.ptr());
|
||||
EXPECT_TRUE(upb_Message_SetExtension(
|
||||
UPB_UPCAST(msg), upb_test_convert_ext_string_ext, &val_str, arena.ptr()));
|
||||
|
||||
const upb_MiniTable* src_mt =
|
||||
&upb__test__convert__MessageWithExtension_msg_init;
|
||||
|
|
@ -2259,8 +2277,11 @@ TEST(ConvertTest, NonCanonicalMixedToCanonical) {
|
|||
|
||||
upb_ExtensionRegistry* extreg = upb_ExtensionRegistry_New(arena.ptr());
|
||||
ASSERT_NE(extreg, nullptr);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_field_int32_ext);
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_string_ext);
|
||||
EXPECT_EQ(
|
||||
upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_field_int32_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
EXPECT_EQ(upb_ExtensionRegistry_Add(extreg, upb_test_convert_ext_string_ext),
|
||||
kUpb_ExtensionRegistryStatus_Ok);
|
||||
|
||||
const upb_Message* converted = upb_Message_Convert(
|
||||
non_canonical_src, empty_mt, src_mt, extreg, 0, 0, arena.ptr());
|
||||
|
|
|
|||
|
|
@ -629,9 +629,9 @@ TEST(GeneratedCode, DeepCloneMessageNonCanonicalExtensions) {
|
|||
upb_StringView_FromString("LifecycleValue"));
|
||||
|
||||
// Attach as non-canonical extension
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), upb_test_ModelExtension1_model_ext_ext, &ext1,
|
||||
source_arena);
|
||||
source_arena));
|
||||
|
||||
// Deep clone msg to clone
|
||||
upb_Arena* arena = upb_Arena_New();
|
||||
|
|
|
|||
|
|
@ -330,9 +330,9 @@ UPB_API_INLINE void upb_Message_SetBaseField(struct upb_Message* msg,
|
|||
(f, UPB_PRIVATE(_upb_Message_MutableDataPtr)(msg, f), val);
|
||||
}
|
||||
|
||||
UPB_API_INLINE bool upb_Message_SetExtension(struct upb_Message* msg,
|
||||
const upb_MiniTableExtension* e,
|
||||
const void* val, upb_Arena* a) {
|
||||
UPB_NODISCARD UPB_API_INLINE bool upb_Message_SetExtension(
|
||||
struct upb_Message* msg, const upb_MiniTableExtension* e, const void* val,
|
||||
upb_Arena* a) {
|
||||
UPB_ASSERT(!upb_Message_IsFrozen(msg));
|
||||
UPB_ASSERT(a);
|
||||
upb_Extension* ext =
|
||||
|
|
@ -343,9 +343,10 @@ UPB_API_INLINE bool upb_Message_SetExtension(struct upb_Message* msg,
|
|||
return true;
|
||||
}
|
||||
|
||||
UPB_API_INLINE bool UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
struct upb_Message* msg, const upb_MiniTableExtension* e, const void* val,
|
||||
upb_Arena* a) {
|
||||
UPB_NODISCARD UPB_API_INLINE bool UPB_PRIVATE(
|
||||
_upb_Message_SetNonCanonicalExtension)(struct upb_Message* msg,
|
||||
const upb_MiniTableExtension* e,
|
||||
const void* val, upb_Arena* a) {
|
||||
UPB_ASSERT(!upb_Message_IsFrozen(msg));
|
||||
UPB_ASSERT(a);
|
||||
upb_Extension* ext =
|
||||
|
|
@ -372,7 +373,7 @@ UPB_INLINE bool UPB_PRIVATE(_upb_Message_SetField)(struct upb_Message* msg,
|
|||
}
|
||||
}
|
||||
|
||||
UPB_API_INLINE const upb_Array* upb_Message_GetArray(
|
||||
UPB_NODISCARD UPB_API_INLINE const upb_Array* upb_Message_GetArray(
|
||||
const struct upb_Message* msg, const upb_MiniTableField* f) {
|
||||
UPB_PRIVATE(_upb_MiniTableField_CheckIsArray)(f);
|
||||
upb_Array* ret;
|
||||
|
|
|
|||
|
|
@ -162,12 +162,12 @@ TEST(CompareTest, MessageIsEqualWithIdenticalNonCanonicalExtensions) {
|
|||
upb_StringView_FromString("World"));
|
||||
|
||||
// 3. Attach identical non-canonical extensions to both messages
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg1), upb_test_ModelExtension1_model_ext_ext, &extension1,
|
||||
arena.ptr());
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
arena.ptr()));
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg2), upb_test_ModelExtension1_model_ext_ext, &extension2,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
// 4. Verify upb_Message_IsEqual yields true
|
||||
bool is_equal = upb_Message_IsEqual(UPB_UPCAST(msg1), UPB_UPCAST(msg2),
|
||||
|
|
@ -198,12 +198,12 @@ TEST(CompareTest, MessageIsEqualWithDifferentNonCanonicalExtensions) {
|
|||
upb_StringView_FromString("Hello"));
|
||||
|
||||
// 4. Attach different non-canonical extensions to the two messages
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg1), upb_test_ModelExtension1_model_ext_ext, &extension1,
|
||||
arena.ptr());
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
arena.ptr()));
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg2), upb_test_ModelExtension1_model_ext_ext, &extension2,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
// Verify that NextUnknown2 successfully yields the non-canonical extension
|
||||
upb_MessageUnknown udata;
|
||||
|
|
@ -234,9 +234,9 @@ TEST(CompareTest, MessageIsEqualWithOnlyOneHavingNonCanonicalExtension) {
|
|||
upb_StringView_FromString("World"));
|
||||
|
||||
// 3. Attach only to msg1
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg1), upb_test_ModelExtension1_model_ext_ext, &extension1,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
// 4. Verify upb_Message_IsEqual yields false with IncludeUnknownFields
|
||||
bool is_equal_with_unknowns =
|
||||
|
|
@ -264,9 +264,9 @@ TEST(CompareTest, MessageIsEqualWithNonCanonicalExtensionMatchingRawUnknown) {
|
|||
// 2. Obtain encoded raw wire bytes of Extension A by serializing tmp_msg
|
||||
upb_test_ModelWithExtensions* tmp_msg =
|
||||
upb_test_ModelWithExtensions_new(arena.ptr());
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(tmp_msg), upb_test_ModelExtension1_model_ext_ext, &extension1,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
char* buf;
|
||||
size_t size;
|
||||
|
|
@ -279,9 +279,9 @@ TEST(CompareTest, MessageIsEqualWithNonCanonicalExtensionMatchingRawUnknown) {
|
|||
// 3. Create msg1 with non-canonical extension A
|
||||
upb_test_ModelWithExtensions* msg1 =
|
||||
upb_test_ModelWithExtensions_new(arena.ptr());
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg1), upb_test_ModelExtension1_model_ext_ext, &extension1,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
// 4. Create msg2 with raw unknown bytes representing A
|
||||
upb_test_ModelWithExtensions* msg2 =
|
||||
|
|
@ -306,9 +306,9 @@ TEST(CompareTest, MessageSetNonCanonicalExtMatchesUnknown) {
|
|||
|
||||
// 2. Obtain encoded raw wire bytes of Extension A by serializing tmp_msg
|
||||
upb_test_TestMessageSet* tmp_msg = upb_test_TestMessageSet_new(arena.ptr());
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(tmp_msg), upb_test_MessageSetMember_message_set_extension_ext,
|
||||
&extension1, arena.ptr());
|
||||
&extension1, arena.ptr()));
|
||||
|
||||
char* buf;
|
||||
size_t size;
|
||||
|
|
@ -320,9 +320,9 @@ TEST(CompareTest, MessageSetNonCanonicalExtMatchesUnknown) {
|
|||
|
||||
// 3. Create msg1 with non-canonical extension A
|
||||
upb_test_TestMessageSet* msg1 = upb_test_TestMessageSet_new(arena.ptr());
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg1), upb_test_MessageSetMember_message_set_extension_ext,
|
||||
&extension1, arena.ptr());
|
||||
&extension1, arena.ptr()));
|
||||
|
||||
// 4. Create msg2 with raw unknown bytes representing A
|
||||
upb_test_TestMessageSet* msg2 = upb_test_TestMessageSet_new(arena.ptr());
|
||||
|
|
@ -355,9 +355,9 @@ TEST(CompareTest, MessageIsEqualWithCanonicalAndNonCanonicalExtensions) {
|
|||
upb_test_ModelExtension1_new(arena.ptr());
|
||||
upb_test_ModelExtension1_set_str(ext_msg2,
|
||||
upb_StringView_FromString("World"));
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg2), upb_test_ModelExtension1_model_ext_ext, &ext_msg2,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
// 3. Verify upb_Message_IsEqual registers them as NOT equal
|
||||
bool is_equal = upb_Message_IsEqual(UPB_UPCAST(msg1), UPB_UPCAST(msg2),
|
||||
|
|
|
|||
|
|
@ -540,8 +540,8 @@ TEST(GeneratedCode, PromoteNonCanonicalExtension) {
|
|||
|
||||
// 4. Attach custom parsed submessage "World" to msg as a non-canonical
|
||||
// extension under the different custom mini-table layout.
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), &custom_ext, &extension1, arena.ptr());
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), &custom_ext, &extension1, arena.ptr()));
|
||||
|
||||
// 5. Promote the extension using standard compiled mini-table ModelExtension1
|
||||
upb_MessageValue val;
|
||||
|
|
@ -593,9 +593,9 @@ TEST(GeneratedCode, PromoteNonCanonicalExtensionWithSameMinitable) {
|
|||
upb_test_ModelExtension1_set_str(extension1,
|
||||
upb_StringView_FromString("World"));
|
||||
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), upb_test_ModelExtension1_model_ext_ext,
|
||||
(upb_Message**)&extension1, arena.ptr());
|
||||
(upb_Message**)&extension1, arena.ptr()));
|
||||
|
||||
upb_MessageValue val;
|
||||
upb_GetExtension_Status promote_status = upb_Message_GetOrPromoteExtension(
|
||||
|
|
@ -664,8 +664,8 @@ TEST(GeneratedCode, PromoteNonCanonicalExtensionWithDifferentMinitable) {
|
|||
EXPECT_TRUE(upb_Message_SetInt32(extension1, custom_f, 42, arena.ptr()));
|
||||
|
||||
// 7. Attach it as a non-canonical extension to msg using field 1547
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), &custom_ext, &extension1, arena.ptr());
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), &custom_ext, &extension1, arena.ptr()));
|
||||
|
||||
// 8. Run extension promotion using targeting target_ext layout
|
||||
upb_MessageValue val;
|
||||
|
|
|
|||
|
|
@ -937,8 +937,9 @@ TEST(MessageTest, FreezeNonCanonicalExtensions) {
|
|||
ext_submsg, 456);
|
||||
|
||||
// Attach as non-canonical extension
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), upb_test_optional_msg_ext_ext, &ext_submsg, arena.ptr());
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), upb_test_optional_msg_ext_ext, &ext_submsg,
|
||||
arena.ptr()));
|
||||
|
||||
EXPECT_FALSE(upb_Message_IsFrozen(UPB_UPCAST(msg)));
|
||||
EXPECT_FALSE(upb_Message_IsFrozen(UPB_UPCAST(ext_submsg)));
|
||||
|
|
@ -960,8 +961,9 @@ TEST(MessageTest, DiscardUnknownsNonCanonicalExtensions) {
|
|||
protobuf_test_messages_proto3_TestAllTypesProto3_new(arena.ptr());
|
||||
|
||||
// Attach as non-canonical extension
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), upb_test_optional_msg_ext_ext, &ext_submsg, arena.ptr());
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), upb_test_optional_msg_ext_ext, &ext_submsg,
|
||||
arena.ptr()));
|
||||
|
||||
// Add a canonical extension
|
||||
upb_test_TestExtensions_set_optional_int32_ext(msg, 123, arena.ptr());
|
||||
|
|
|
|||
|
|
@ -641,9 +641,9 @@ TEST(DecodeTest, DecodeNonCanonicalExtensionAsUnknown) {
|
|||
upb_StringView_FromString("World"));
|
||||
|
||||
// 3. msg has a non-canonical extension A
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(msg), upb_test_ModelExtension1_model_ext_ext, &extension1,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
// Verify extension count is 0 before encoding/decoding.
|
||||
EXPECT_EQ((int)upb_Message_ExtensionCount(UPB_UPCAST(msg)), 0);
|
||||
|
|
@ -704,9 +704,9 @@ TEST(DecodeTest, DecodeExtensionAsUnknownWithPreexistingUnknown) {
|
|||
|
||||
// 3. Attach to tmp_msg as a non-canonical extension so we can serialize it to
|
||||
// get the bytes
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
UPB_UPCAST(tmp_msg), upb_test_ModelExtension1_model_ext_ext, &extension1,
|
||||
arena.ptr());
|
||||
arena.ptr()));
|
||||
|
||||
// 5. Obtain encoded extension A by serializing tmp_msg
|
||||
char* buf;
|
||||
|
|
|
|||
|
|
@ -218,8 +218,8 @@ TEST(EncodeTest, EncodeNonCanonicalExtensionSuccess) {
|
|||
|
||||
// Attach scalar extension as non-canonical
|
||||
int32_t val = 42;
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_i32_ext, &val, arena);
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_i32_ext, &val, arena));
|
||||
|
||||
// Encode the message.
|
||||
char* buf;
|
||||
|
|
@ -257,8 +257,8 @@ TEST(EncodeTest, SkipUnknownNonCanonicalExtensionSuccess) {
|
|||
|
||||
// 2. Attach a non-canonical extension (ext_recursive, tag 101) to msg
|
||||
upb_wire_test_TestRecursive* sub_msg = upb_wire_test_TestRecursive_new(arena);
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_recursive_ext, &sub_msg, arena);
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_recursive_ext, &sub_msg, arena));
|
||||
|
||||
// 3. Also add some standard raw unknown bytes (tag 150)
|
||||
char raw_unknown[] = "\x08\x96\x01"; // tag 1 = 150
|
||||
|
|
@ -312,13 +312,13 @@ TEST(EncodeTest, EncodeNonCanonicalExtensionDeterministicSuccess) {
|
|||
|
||||
// 1. Attach scalar extension as non-canonical (tag 100)
|
||||
int32_t val = 42;
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_i32_ext, &val, arena);
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_i32_ext, &val, arena));
|
||||
|
||||
// 2. Attach recursive extension as non-canonical (tag 101)
|
||||
upb_wire_test_TestRecursive* sub_msg = upb_wire_test_TestRecursive_new(arena);
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_recursive_ext, &sub_msg, arena);
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_recursive_ext, &sub_msg, arena));
|
||||
|
||||
// Encode the message with deterministic option!
|
||||
char* buf;
|
||||
|
|
@ -385,8 +385,8 @@ TEST(EncodeTest, SkipUnknownNonCanonicalExtensionDeterministicSuccess) {
|
|||
|
||||
// 2. Attach a non-canonical extension (ext_recursive, tag 101) to msg
|
||||
upb_wire_test_TestRecursive* sub_msg = upb_wire_test_TestRecursive_new(arena);
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_recursive_ext, &sub_msg, arena);
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_recursive_ext, &sub_msg, arena));
|
||||
|
||||
// 3. Also add some standard raw unknown bytes (tag 150)
|
||||
char raw_unknown[] = "\x08\x96\x01"; // tag 1 = 150
|
||||
|
|
@ -447,8 +447,8 @@ TEST(EncodeTest, MixedExtensionAndUnknownOrderSuccess) {
|
|||
|
||||
// 2. Add Non-Canonical Extension 1 (Tag 100, ext_i32)
|
||||
int32_t val1 = 42;
|
||||
UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_i32_ext, &val1, arena);
|
||||
EXPECT_TRUE(UPB_PRIVATE(_upb_Message_SetNonCanonicalExtension)(
|
||||
(upb_Message*)msg, upb_wire_test_ext_i32_ext, &val1, arena));
|
||||
|
||||
// 3. Add Unknown 2 (Tag 12, Varint)
|
||||
char unknown2[] = "\x60\x64";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue