[fbl][test] Convert vector tests to zxtest

Change-Id: I5b7ebcc414b2c5f2cb9221e2e3596fa2e40f8b86
diff --git a/zircon/system/ulib/fbl/test/vector_tests.cc b/zircon/system/ulib/fbl/test/vector_tests.cc
index b925a50..863d885 100644
--- a/zircon/system/ulib/fbl/test/vector_tests.cc
+++ b/zircon/system/ulib/fbl/test/vector_tests.cc
@@ -2,17 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <utility>
+
 #include <fbl/ref_counted.h>
 #include <fbl/ref_ptr.h>
 #include <fbl/string.h>
 #include <fbl/tests/lfsr.h>
 #include <fbl/unique_ptr.h>
 #include <fbl/vector.h>
-#include <unittest/unittest.h>
+#include <zxtest/zxtest.h>
 
-#include <utility>
-
-namespace fbl::tests {
 namespace {
 
 // Different container classes for the types of objects
@@ -82,7 +81,7 @@
   using ItemType = fbl::unique_ptr<TestObject>;
 
   static ItemType Create(ValueType val) {
-    AllocChecker ac;
+    fbl::AllocChecker ac;
     ItemType ptr(new (&ac) TestObject(val));
     ZX_ASSERT(ac.check());
     return ptr;
@@ -103,7 +102,7 @@
   using ItemType = fbl::RefPtr<RefCountedItem<TestObject>>;
 
   static ItemType Create(ValueType val) {
-    AllocChecker ac;
+    fbl::AllocChecker ac;
     auto ptr = AdoptRef(new (&ac) RefCountedItem<TestObject>(TestObject(val)));
     ZX_ASSERT(ac.check());
     return ptr;
@@ -123,10 +122,10 @@
   ValueType NextValue() { return key_lfsr_.GetNext(); }
   ItemType NextItem() { return ItemTraits::Create(NextValue()); }
   void Reset() { key_lfsr_.SetCore(seed); }
-  Lfsr<ValueType> key_lfsr_ = Lfsr<ValueType>(seed);
+  fbl::tests::Lfsr<ValueType> key_lfsr_{seed};
 };
 
-struct TestAllocatorTraits : public DefaultAllocatorTraits {
+struct TestAllocatorTraits : public fbl::DefaultAllocatorTraits {
   static void* Allocate(size_t size) {
     void* result = DefaultAllocatorTraits::Allocate(size);
     // Intentionally fill the allocated portion of memory
@@ -144,11 +143,9 @@
 // Actual tests
 
 template <typename ItemTraits, size_t size>
-bool VectorTestAccessRelease() {
+void AccessRelease() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
   Generator<ItemTraits> gen;
   // Create the vector, verify its contents
@@ -183,8 +180,6 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 struct CountedAllocatorTraits : public TestAllocatorTraits {
@@ -198,11 +193,9 @@
 size_t CountedAllocatorTraits::allocation_count = 0;
 
 template <typename ItemTraits, size_t size>
-bool VectorTestPushBackInCapacity() {
+void PushBackInCapacity() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
 
   CountedAllocatorTraits::allocation_count = 0;
@@ -231,16 +224,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestPushBackByConstRefInCapacity() {
+void PushBackByConstRefInCapacity() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
 
   CountedAllocatorTraits::allocation_count = 0;
@@ -270,16 +259,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestPushBackBeyondCapacity() {
+void PushBackBeyondCapacity() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
 
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
@@ -301,16 +286,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestPushBackByConstRefBeyondCapacity() {
+void PushBackByConstRefBeyondCapacity() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
 
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
@@ -333,16 +314,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestPopBack() {
+void PopBack() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
 
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
@@ -375,8 +352,6 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 struct FailingAllocatorTraits {
@@ -385,7 +360,7 @@
 };
 
 template <typename ItemType, size_t S>
-struct PartiallyFailingAllocatorTraits : public DefaultAllocatorTraits {
+struct PartiallyFailingAllocatorTraits : public fbl::DefaultAllocatorTraits {
   static void* Allocate(size_t size) {
     if (size <= sizeof(ItemType) * S) {
       return DefaultAllocatorTraits::Allocate(size);
@@ -395,11 +370,9 @@
 };
 
 template <typename ItemTraits, size_t size>
-bool VectorTestAllocationFailure() {
+void AllocationFailure() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
 
@@ -457,16 +430,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestMove() {
+void Move() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
 
@@ -522,16 +491,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestSwap() {
+void Swap() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
 
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
@@ -575,16 +540,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestIterator() {
+void Iterator() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
 
@@ -616,16 +577,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestInsertDelete() {
+void InsertDelete() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
 
@@ -684,16 +641,12 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits, size_t size>
-bool VectorTestNoAllocCheck() {
+void NoAllocCheck() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
 
   {
@@ -741,16 +694,12 @@
 
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
 template <typename ItemTraits>
-bool VectorTestInitializerList() {
+void InitializerList() {
   using ItemType = typename ItemTraits::ItemType;
 
-  BEGIN_TEST;
-
   Generator<ItemTraits> gen;
 
   CountedAllocatorTraits::allocation_count = 0;
@@ -781,13 +730,9 @@
   }
   ASSERT_TRUE(ItemTraits::CheckLiveCount(0));
   ASSERT_TRUE(ItemTraits::CheckCtorDtorCount());
-
-  END_TEST;
 }
 
-bool VectorTestImplicitConversion() {
-  BEGIN_TEST;
-
+TEST(VectorTest, ImplicitConversion) {
   {
     fbl::Vector<fbl::String> v;
     v.push_back(fbl::String("First"));
@@ -818,13 +763,9 @@
     ASSERT_EQ(strcmp(v[2].c_str(), "Third"), 0);
     ASSERT_EQ(strcmp(v[3].c_str(), "Fourth"), 0);
   }
-
-  END_TEST;
 }
 
-bool VectorDataConstness() {
-  BEGIN_TEST;
-
+TEST(VectorTest, VectorDataConstness) {
   fbl::Vector<int> vector_int;
 
   auto& ref_vector_int = vector_int;
@@ -835,17 +776,19 @@
 
   static_assert(!std::is_const_v<std::remove_pointer_t<decltype(int_ptr)>>);
   static_assert(std::is_const_v<std::remove_pointer_t<decltype(const_int_ptr)>>);
-
-  END_TEST;
 }
 
-}  // namespace
+#define RUN_TRAIT_TEST(test_base, test_trait, test_size)         \
+  TEST(VectorTest, test_base##_##test_trait##_Size##test_size) { \
+    auto fn = test_base<test_trait, test_size>;                  \
+    ASSERT_NO_FAILURES(fn());                                    \
+  }
 
-#define RUN_FOR_ALL_TRAITS(test_base, test_size)     \
-  RUN_TEST((test_base<ValueTypeTraits, test_size>))  \
-  RUN_TEST((test_base<StructTypeTraits, test_size>)) \
-  RUN_TEST((test_base<UniquePtrTraits, test_size>))  \
-  RUN_TEST((test_base<RefPtrTraits, test_size>))
+#define RUN_FOR_ALL_TRAITS(test_base, test_size)         \
+  RUN_TRAIT_TEST(test_base, ValueTypeTraits, test_size)  \
+  RUN_TRAIT_TEST(test_base, StructTypeTraits, test_size) \
+  RUN_TRAIT_TEST(test_base, UniquePtrTraits, test_size)  \
+  RUN_TRAIT_TEST(test_base, RefPtrTraits, test_size)
 
 #define RUN_FOR_ALL(test_base)      \
   RUN_FOR_ALL_TRAITS(test_base, 1)  \
@@ -855,23 +798,23 @@
   RUN_FOR_ALL_TRAITS(test_base, 64) \
   RUN_FOR_ALL_TRAITS(test_base, 100)
 
-BEGIN_TEST_CASE(vector_tests)
-RUN_FOR_ALL(VectorTestAccessRelease)
-RUN_FOR_ALL(VectorTestPushBackInCapacity)
-RUN_TEST((VectorTestPushBackByConstRefInCapacity<ValueTypeTraits, 100>))
-RUN_FOR_ALL(VectorTestPushBackBeyondCapacity)
-RUN_TEST((VectorTestPushBackByConstRefBeyondCapacity<ValueTypeTraits, 100>))
-RUN_FOR_ALL(VectorTestPopBack)
-RUN_FOR_ALL(VectorTestAllocationFailure)
-RUN_FOR_ALL(VectorTestMove)
-RUN_FOR_ALL(VectorTestSwap)
-RUN_FOR_ALL(VectorTestIterator)
-RUN_FOR_ALL(VectorTestInsertDelete)
-RUN_FOR_ALL(VectorTestNoAllocCheck)
-RUN_TEST(VectorTestInitializerList<ValueTypeTraits>)
-RUN_TEST(VectorTestInitializerList<RefPtrTraits>)
-RUN_TEST(VectorTestImplicitConversion)
-RUN_TEST(VectorDataConstness)
-END_TEST_CASE(vector_tests)
+RUN_FOR_ALL(AccessRelease)
+RUN_FOR_ALL(PushBackInCapacity)
+RUN_TRAIT_TEST(PushBackByConstRefInCapacity, ValueTypeTraits, 100)
+RUN_FOR_ALL(PushBackBeyondCapacity)
+RUN_TRAIT_TEST(PushBackByConstRefBeyondCapacity, ValueTypeTraits, 100)
+RUN_FOR_ALL(PopBack)
+RUN_FOR_ALL(AllocationFailure)
+RUN_FOR_ALL(Move)
+RUN_FOR_ALL(Swap)
+RUN_FOR_ALL(Iterator)
+RUN_FOR_ALL(InsertDelete)
+RUN_FOR_ALL(NoAllocCheck)
 
-}  // namespace fbl::tests
+TEST(VectorTest, InitializerListValueType) {
+  ASSERT_NO_FAILURES(InitializerList<ValueTypeTraits>());
+}
+
+TEST(VectorTest, InitializerListRefPtr) { ASSERT_NO_FAILURES(InitializerList<RefPtrTraits>()); }
+
+}  // namespace