Allocate `RepeatedPtrField`s with arenas on arenas in arena_unittest.

PiperOrigin-RevId: 805585798
diff --git a/src/google/protobuf/arena_unittest.cc b/src/google/protobuf/arena_unittest.cc
index 2898df1..265977e 100644
--- a/src/google/protobuf/arena_unittest.cc
+++ b/src/google/protobuf/arena_unittest.cc
@@ -41,6 +41,7 @@
 #include "google/protobuf/message_lite.h"
 #include "google/protobuf/port.h"
 #include "google/protobuf/repeated_field.h"
+#include "google/protobuf/repeated_ptr_field.h"
 #include "google/protobuf/test_util.h"
 #include "google/protobuf/unittest.pb.h"
 #include "google/protobuf/unittest_arena.pb.h"
@@ -1375,16 +1376,16 @@
 void TestSwapRepeatedField(Arena* arena1, Arena* arena2) {
   // Test "safe" (copying) semantics for direct Swap() on RepeatedPtrField
   // between arenas.
-  RepeatedPtrField<TestAllTypes> field1(arena1);
-  RepeatedPtrField<TestAllTypes> field2(arena2);
+  auto* field1 = Arena::Create<RepeatedPtrField<TestAllTypes>>(arena1);
+  auto* field2 = Arena::Create<RepeatedPtrField<TestAllTypes>>(arena2);
   for (int i = 0; i < 10; i++) {
     TestAllTypes* t = Arena::Create<TestAllTypes>(arena1);
     t->set_optional_string("field1");
     t->set_optional_int32(i);
     if (arena1 != nullptr) {
-      field1.UnsafeArenaAddAllocated(t);
+      field1->UnsafeArenaAddAllocated(t);
     } else {
-      field1.AddAllocated(t);
+      field1->AddAllocated(t);
     }
   }
   for (int i = 0; i < 5; i++) {
@@ -1392,22 +1393,29 @@
     t->set_optional_string("field2");
     t->set_optional_int32(i);
     if (arena2 != nullptr) {
-      field2.UnsafeArenaAddAllocated(t);
+      field2->UnsafeArenaAddAllocated(t);
     } else {
-      field2.AddAllocated(t);
+      field2->AddAllocated(t);
     }
   }
-  field1.Swap(&field2);
-  EXPECT_EQ(5, field1.size());
-  EXPECT_EQ(10, field2.size());
-  EXPECT_TRUE(std::string("field1") == field2.Get(0).optional_string());
-  EXPECT_TRUE(std::string("field2") == field1.Get(0).optional_string());
+  field1->Swap(field2);
+  EXPECT_EQ(5, field1->size());
+  EXPECT_EQ(10, field2->size());
+  EXPECT_TRUE(std::string("field1") == field2->Get(0).optional_string());
+  EXPECT_TRUE(std::string("field2") == field1->Get(0).optional_string());
   // Ensure that fields retained their original order:
-  for (int i = 0; i < field1.size(); i++) {
-    EXPECT_EQ(i, field1.Get(i).optional_int32());
+  for (int i = 0; i < field1->size(); i++) {
+    EXPECT_EQ(i, field1->Get(i).optional_int32());
   }
-  for (int i = 0; i < field2.size(); i++) {
-    EXPECT_EQ(i, field2.Get(i).optional_int32());
+  for (int i = 0; i < field2->size(); i++) {
+    EXPECT_EQ(i, field2->Get(i).optional_int32());
+  }
+
+  if (arena1 == nullptr) {
+    delete field1;
+  }
+  if (arena2 == nullptr) {
+    delete field2;
   }
 }