pw_unit_test migration: inet layer (#33311)

* pw_unit_test migration: inet layer

* apply restyled patch

* modify test_components.txt for openiot sdk

* fix BUILD.gn

* only run TestInetEndPoint when CHIP_SYSTEM_CONFIG_USE_SOCKETS 1

* move condition on compilation of TestInetEndPoint to BUILD.gn instead of ifdef
diff --git a/src/inet/tests/BUILD.gn b/src/inet/tests/BUILD.gn
index 0eeec84..7b0e770 100644
--- a/src/inet/tests/BUILD.gn
+++ b/src/inet/tests/BUILD.gn
@@ -15,10 +15,12 @@
 import("//build_overrides/build.gni")
 import("//build_overrides/chip.gni")
 import("//build_overrides/nlunit_test.gni")
+import("//build_overrides/pigweed.gni")
 
 import("${chip_root}/build/chip/chip_test_suite.gni")
 import("${chip_root}/build/chip/tests.gni")
 import("${chip_root}/src/platform/device.gni")
+import("${chip_root}/src/system/system.gni")
 
 config("tests_config") {
   include_dirs = [ "." ]
@@ -60,7 +62,7 @@
   ]
 }
 
-chip_test_suite_using_nltest("tests") {
+chip_test_suite("tests") {
   output_name = "libInetLayerTests"
 
   public_configs = [ ":tests_config" ]
@@ -69,10 +71,7 @@
     ":helpers",
     "${chip_root}/src/inet",
     "${chip_root}/src/lib/core",
-    "${chip_root}/src/lib/support:testing_nlunit",
-    "${nlunit_test_root}:nlunit-test",
   ]
-
   test_sources = [
     "TestBasicPacketFilters.cpp",
     "TestInetAddress.cpp",
@@ -80,7 +79,7 @@
   ]
   sources = []
 
-  if (current_os != "zephyr") {
+  if (chip_system_config_use_sockets && current_os != "zephyr") {
     test_sources += [ "TestInetEndPoint.cpp" ]
   }
 
diff --git a/src/inet/tests/TestBasicPacketFilters.cpp b/src/inet/tests/TestBasicPacketFilters.cpp
index ef07cab..162fe52 100644
--- a/src/inet/tests/TestBasicPacketFilters.cpp
+++ b/src/inet/tests/TestBasicPacketFilters.cpp
@@ -18,23 +18,29 @@
 #include <stdio.h>
 #include <string.h>
 
+#include <gtest/gtest.h>
+
 #include <inet/BasicPacketFilters.h>
 #include <inet/IPPacketInfo.h>
 #include <inet/InetInterface.h>
 #include <lib/support/CHIPMem.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/Span.h>
-#include <lib/support/UnitTestRegistration.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <system/SystemPacketBuffer.h>
 
-#include <nlunit-test.h>
-
 namespace {
 
 using namespace chip;
 using namespace chip::Inet;
 
+class TestBasicPacketFilters : public ::testing::Test
+{
+public:
+    static void SetUpTestSuite() { ASSERT_EQ(chip::Platform::MemoryInit(), CHIP_NO_ERROR); }
+    static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); }
+};
+
 class DropIfTooManyQueuedPacketsHarness : public DropIfTooManyQueuedPacketsFilter
 {
 public:
@@ -67,7 +73,6 @@
     }
 
     // Public bits to make testing easier
-    nlTestSuite * mTestSuite          = nullptr;
     int mNumOnDroppedCalled           = 0;
     int mNumOnLastMatchDequeuedCalled = 0;
     bool mHitCeilingWantFloor;
@@ -118,23 +123,19 @@
 DropIfTooManyQueuedPacketsHarness gFilter(0);
 int gFakeEndpointForPointer = 0;
 
-void TestBasicPacketFilter(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestBasicPacketFilters, TestBasicPacketFilter)
 {
     constexpr uint16_t kMdnsPort = 5353u;
 
-    gFilter.mTestSuite = inSuite;
-
     // Predicate for test is filter that destination port is 5353 (mDNS).
     // NOTE: A non-capturing lambda is used, but a plain function could have been used as well...
     auto predicate = [](void * context, const void * endpoint, const chip::Inet::IPPacketInfo & pktInfo,
                         const chip::System::PacketBufferHandle & pktPayload) -> bool {
-        auto filter           = reinterpret_cast<DropIfTooManyQueuedPacketsHarness *>(context);
-        auto testSuite        = filter->mTestSuite;
         auto expectedEndpoint = &gFakeEndpointForPointer;
 
         // Ensure we get called with context and expected endpoint pointer
-        NL_TEST_ASSERT(testSuite, context == &gFilter);
-        NL_TEST_ASSERT(testSuite, endpoint == expectedEndpoint);
+        EXPECT_EQ(context, &gFilter);
+        EXPECT_EQ(endpoint, expectedEndpoint);
 
         // Predicate filters destination port being 5353
         return (pktInfo.DestPort == kMdnsPort);
@@ -150,9 +151,9 @@
     const uint8_t kFakePayloadData[] = { 1, 2, 3 };
     const ByteSpan kFakePayload{ kFakePayloadData };
 
-    NL_TEST_ASSERT(inSuite, IPAddress::FromString("fe80::aaaa:bbbb:cccc:dddd", fakeSrc));
-    NL_TEST_ASSERT(inSuite, IPAddress::FromString("fe80::0000:1111:2222:3333", fakeDest));
-    NL_TEST_ASSERT(inSuite, IPAddress::FromString("ff02::fb", fakeMdnsDest));
+    EXPECT_TRUE(IPAddress::FromString("fe80::aaaa:bbbb:cccc:dddd", fakeSrc));
+    EXPECT_TRUE(IPAddress::FromString("fe80::0000:1111:2222:3333", fakeDest));
+    EXPECT_TRUE(IPAddress::FromString("ff02::fb", fakeMdnsDest));
 
     // Shorthands for simplifying asserts
     constexpr EndpointQueueFilter::FilterOutcome kAllowPacket = EndpointQueueFilter::FilterOutcome::kAllowPacket;
@@ -165,131 +166,116 @@
         // Enqueue some packets that don't match filter, all allowed, never hit the drop
         for (int numPkt = 0; numPkt < (kMaxQueuedPacketsLimit + 1); ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket == fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
         }
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 0u);
 
         // Dequeue all packets
         for (int numPkt = 0; numPkt < (kMaxQueuedPacketsLimit + 1); ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket == fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
         }
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 0u);
 
         // OnDroped/OnLastMatchDequeued only ever called for matching packets, never for non-matching
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 0);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 0);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
     }
 
     {
         // Enqueue packets that match filter, up to watermark. None dropped
         for (int numPkt = 0; numPkt < kMaxQueuedPacketsLimit; ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket ==
-                               fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 0);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 0);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 0u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 0);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Enqueue packets that match filter, beyond watermark: all dropped.
         for (int numPkt = 0; numPkt < 2; ++numPkt)
         {
-            NL_TEST_ASSERT(
-                inSuite, kDropPacket == fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kDropPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 2);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 2);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 2u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 2);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Dequeue 2 packets that were enqueued, matching filter
         for (int numPkt = 0; numPkt < 2; ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket ==
-                               fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
         // Number of dropped packets didn't change
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 2);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 2);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 2u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 2);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Enqueue packets that match filter, up to watermark again. None dropped.
         for (int numPkt = 0; numPkt < 2; ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket ==
-                               fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
 
         // No change from prior state
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 2);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 2);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 2u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 2);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Enqueue two more packets, expect drop
         for (int numPkt = 0; numPkt < 2; ++numPkt)
         {
-            NL_TEST_ASSERT(
-                inSuite, kDropPacket == fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kDropPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
 
         // Expect two more dropped total
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 4u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 4);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Enqueue non-matching packet, expect allowed.
         for (int numPkt = 0; numPkt < kMaxQueuedPacketsLimit; ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket == fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
         }
 
         // Expect no more dropepd
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 4u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 4);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Dequeue non-matching packet, expect allowed.
         for (int numPkt = 0; numPkt < kMaxQueuedPacketsLimit; ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket == fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
         }
 
         // Expect no change
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 4u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 4);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Dequeue all matching packets, expect allowed and one OnLastMatchDequeued on last one.
         for (int numPkt = 0; numPkt < (kMaxQueuedPacketsLimit - 1); ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket ==
-                               fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
 
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 4u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 4);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
-        NL_TEST_ASSERT(inSuite,
-                       kAllowPacket == fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+        EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
 
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 4);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 1);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 4u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 4);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 1);
     }
 
     // Validate that clearing drop count works
     {
         gFilter.ClearNumDroppedPackets();
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 0u);
 
         gFilter.mNumOnDroppedCalled           = 0;
         gFilter.mNumOnLastMatchDequeuedCalled = 0;
@@ -302,13 +288,11 @@
         // Enqueue packets up to twice the watermark. None dropped.
         for (int numPkt = 0; numPkt < (2 * kMaxQueuedPacketsLimit); ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket ==
-                               fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 0);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 0);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 0u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 0);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Works even if max number of packets allowed is zero
         gFilter.SetMaxQueuedPacketsLimit(0);
@@ -316,13 +300,11 @@
         // Enqueue packets up to twice the watermark. None dropped.
         for (int numPkt = 0; numPkt < (2 * kMaxQueuedPacketsLimit); ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket ==
-                               fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 0);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 0);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 0u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 0);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
     }
 
     // Validate that setting max packets to zero, with a matching predicate, drops all matching packets, none of the non-matching.
@@ -333,53 +315,23 @@
         // Enqueue packets that match filter, up to watermark. All dropped
         for (int numPkt = 0; numPkt < kMaxQueuedPacketsLimit; ++numPkt)
         {
-            NL_TEST_ASSERT(
-                inSuite, kDropPacket == fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
+            EXPECT_EQ(kDropPacket, fakeUdpEndpoint.ProcessEnqueue(fakeSrc, kOtherPort, fakeMdnsDest, kMdnsPort, kFakePayload));
         }
 
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 3);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 3);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 3u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 3);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
 
         // Enqueue non-filter-matching, none dropped
         for (int numPkt = 0; numPkt < kMaxQueuedPacketsLimit; ++numPkt)
         {
-            NL_TEST_ASSERT(inSuite,
-                           kAllowPacket == fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
+            EXPECT_EQ(kAllowPacket, fakeUdpEndpoint.ProcessDequeue(fakeSrc, kOtherPort, fakeDest, kOtherPort, kFakePayload));
         }
 
-        NL_TEST_ASSERT(inSuite, gFilter.GetNumDroppedPackets() == 3);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnDroppedCalled == 3);
-        NL_TEST_ASSERT(inSuite, gFilter.mNumOnLastMatchDequeuedCalled == 0);
+        EXPECT_EQ(gFilter.GetNumDroppedPackets(), 3u);
+        EXPECT_EQ(gFilter.mNumOnDroppedCalled, 3);
+        EXPECT_EQ(gFilter.mNumOnLastMatchDequeuedCalled, 0);
     }
 }
 
-const nlTest sTests[] = {
-    NL_TEST_DEF("TestBasicPacketFilter", TestBasicPacketFilter), //
-    NL_TEST_SENTINEL()                                           //
-};
-
-int TestSuiteSetup(void * inContext)
-{
-    CHIP_ERROR error = chip::Platform::MemoryInit();
-    if (error != CHIP_NO_ERROR)
-        return FAILURE;
-    return SUCCESS;
-}
-
-int TestSuiteTeardown(void * inContext)
-{
-    chip::Platform::MemoryShutdown();
-    return SUCCESS;
-}
-
 } // namespace
-
-int TestBasicPacketFilters()
-{
-    nlTestSuite theSuite = { "TestBasicPacketFilters", sTests, &TestSuiteSetup, &TestSuiteTeardown };
-    nlTestRunner(&theSuite, nullptr);
-    return nlTestRunnerStats(&theSuite);
-}
-
-CHIP_REGISTER_TEST_SUITE(TestBasicPacketFilters)
diff --git a/src/inet/tests/TestInetAddress.cpp b/src/inet/tests/TestInetAddress.cpp
index 426d6b7..1b7e7bd 100644
--- a/src/inet/tests/TestInetAddress.cpp
+++ b/src/inet/tests/TestInetAddress.cpp
@@ -23,18 +23,19 @@
  *    a class to store and format IPV4 and IPV6 Internet Protocol addresses.
  *
  */
-#include <lib/core/CHIPConfig.h>
-
-#include <inet/IPAddress.h>
 
 #include <string.h>
 
+#include <gtest/gtest.h>
+
+#include <inet/IPAddress.h>
+#include <lib/core/CHIPConfig.h>
+
 #if CHIP_SYSTEM_CONFIG_USE_LWIP
+#include <inet/arpa-inet-compatibility.h>
 #include <lwip/init.h>
 #include <lwip/ip_addr.h>
 
-#include <inet/arpa-inet-compatibility.h>
-
 #elif CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
 #include <inet/arpa-inet-compatibility.h>
 #include <openthread/icmp6.h>
@@ -45,13 +46,9 @@
 #include <sys/socket.h>
 #endif
 
-#include <nlunit-test.h>
-
 #include <inet/IPPrefix.h>
 #include <inet/InetError.h>
-
 #include <lib/support/CodeUtils.h>
-#include <lib/support/UnitTestRegistration.h>
 
 using namespace chip;
 using namespace chip::Inet;
@@ -149,6 +146,12 @@
     const IPAddressContextRange mIPv6TransientMulticastContextRange;
     const IPAddressContextRange mIPv6PrefixMulticastContextRange;
     const IPAddressExpandedContextRange mIPAddressExpandedContextRange;
+
+    TestContext(const IPAddressContextRange IPv6WellKnown, const IPAddressContextRange IPv6Transient,
+                const IPAddressContextRange IPv6Prefix, const IPAddressExpandedContextRange IPv6AddressExpanded) :
+        mIPv6WellKnownMulticastContextRange(IPv6WellKnown),
+        mIPv6TransientMulticastContextRange(IPv6Transient), mIPv6PrefixMulticastContextRange(IPv6Prefix),
+        mIPAddressExpandedContextRange(IPv6AddressExpanded){};
 };
 
 // Global Variables
@@ -623,26 +626,32 @@
 const size_t kIPv6PrefixMulticastTestElements    = sizeof(sIPv6PrefixMulticastContext) / sizeof(struct IPAddressContext);
 const size_t kIPAddressTestElements              = sizeof(sIPAddressContext) / sizeof(struct IPAddressExpandedContext);
 
-// clang-format off
-const TestContext sTestContext = {
+const struct TestContext * pTestContext = nullptr;
+
+class TestInetAddress : public ::testing::Test
+{
+public:
+    static void SetUpTestSuite()
     {
-        &sIPv6WellKnownMulticastContext[0],
-        &sIPv6WellKnownMulticastContext[kIPv6WellKnownMulticastTestElements]
-    },
+        if (pTestContext == nullptr)
+        {
+            pTestContext = new TestContext(
+                { &sIPv6WellKnownMulticastContext[0], &sIPv6WellKnownMulticastContext[kIPv6WellKnownMulticastTestElements] },
+                { &sIPv6TransientMulticastContext[0], &sIPv6TransientMulticastContext[kIPv6TransientMulticastTestElements] },
+                { &sIPv6PrefixMulticastContext[0], &sIPv6PrefixMulticastContext[kIPv6PrefixMulticastTestElements] },
+                { &sIPAddressContext[0], &sIPAddressContext[kIPAddressTestElements] });
+            ASSERT_NE(pTestContext, nullptr);
+        }
+    }
+    static void TearDownTestSuite()
     {
-        &sIPv6TransientMulticastContext[0],
-        &sIPv6TransientMulticastContext[kIPv6TransientMulticastTestElements]
-    },
-    {
-        &sIPv6PrefixMulticastContext[0],
-        &sIPv6PrefixMulticastContext[kIPv6PrefixMulticastTestElements]
-    },
-    {
-        &sIPAddressContext[0],
-        &sIPAddressContext[kIPAddressTestElements]
+        if (pTestContext != nullptr)
+        {
+            delete pTestContext;
+            pTestContext = nullptr;
+        }
     }
 };
-// clang-format on
 
 // Utility functions.
 
@@ -665,12 +674,11 @@
     addr = IPAddress::Any;
 }
 
-void CheckAddressQuartet(nlTestSuite * inSuite, const uint32_t & inFirstAddressQuartet, const uint32_t & inSecondAddressQuartet,
-                         const size_t & inWhich)
+void CheckAddressQuartet(const uint32_t & inFirstAddressQuartet, const uint32_t & inSecondAddressQuartet, const size_t & inWhich)
 {
     const bool lResult = (inFirstAddressQuartet == inSecondAddressQuartet);
 
-    NL_TEST_ASSERT(inSuite, lResult == true);
+    EXPECT_EQ(lResult, true);
 
     if (!lResult)
     {
@@ -679,33 +687,32 @@
     }
 }
 
-void CheckAddressQuartet(nlTestSuite * inSuite, const IPAddressContext & inContext, const IPAddress & inAddress,
-                         const size_t & inWhich)
+void CheckAddressQuartet(const IPAddressContext & inContext, const IPAddress & inAddress, const size_t & inWhich)
 {
-    CheckAddressQuartet(inSuite, inAddress.Addr[inWhich], htonl(inContext.mAddrQuartets[inWhich]), inWhich);
+    CheckAddressQuartet(inAddress.Addr[inWhich], htonl(inContext.mAddrQuartets[inWhich]), inWhich);
 }
 
-void CheckAddressQuartets(nlTestSuite * inSuite, const IPAddress & inFirstAddress, const IPAddress & inSecondAddress)
+void CheckAddressQuartets(const IPAddress & inFirstAddress, const IPAddress & inSecondAddress)
 {
     for (size_t i = 0; i < 4; i++)
     {
-        CheckAddressQuartet(inSuite, inFirstAddress.Addr[i], inSecondAddress.Addr[i], i);
+        CheckAddressQuartet(inFirstAddress.Addr[i], inSecondAddress.Addr[i], i);
     }
 }
 
-void CheckAddressQuartets(nlTestSuite * inSuite, const IPAddressContext & inContext, const IPAddress & inAddress)
+void CheckAddressQuartets(const IPAddressContext & inContext, const IPAddress & inAddress)
 {
     for (size_t i = 0; i < 4; i++)
     {
-        CheckAddressQuartet(inSuite, inContext, inAddress, i);
+        CheckAddressQuartet(inContext, inAddress, i);
     }
 }
 
-void CheckAddressString(nlTestSuite * inSuite, const char * inActual, const char * inExpected)
+void CheckAddressString(const char * inActual, const char * inExpected)
 {
     const int lResult = strcasecmp(inActual, inExpected);
 
-    NL_TEST_ASSERT(inSuite, lResult == 0);
+    EXPECT_FALSE(lResult);
 
     if (lResult != 0)
     {
@@ -713,7 +720,7 @@
     }
 }
 
-void CheckAddress(nlTestSuite * inSuite, const IPAddressContext & inContext, const IPAddress & inAddress)
+void CheckAddress(const IPAddressContext & inContext, const IPAddress & inAddress)
 {
     char lAddressBuffer[INET6_ADDRSTRLEN];
     IPAddress lParsedAddress;
@@ -721,12 +728,12 @@
 
     // Compare the address quartets to their control values.
 
-    CheckAddressQuartets(inSuite, inContext, inAddress);
+    CheckAddressQuartets(inContext, inAddress);
 
     // Convert the control string to an address and compare the parsed address to the created address.
 
     lResult = IPAddress::FromString(inContext.mAddrString, lParsedAddress);
-    NL_TEST_ASSERT(inSuite, lResult == true);
+    EXPECT_EQ(lResult, true);
 
     lResult = (inAddress == lParsedAddress);
 
@@ -745,9 +752,9 @@
     char uncompressedAddrStr[INET6_ADDRSTRLEN];
     // Reconvert the previously parsed control string to an uncompressed string format
     lParsedAddress.ToString(uncompressedAddrStr);
-    CheckAddressString(inSuite, lAddressBuffer, uncompressedAddrStr);
+    CheckAddressString(lAddressBuffer, uncompressedAddrStr);
 #else
-    CheckAddressString(inSuite, lAddressBuffer, inContext.mAddrString);
+    CheckAddressString(lAddressBuffer, inContext.mAddrString);
 #endif
 }
 
@@ -756,11 +763,10 @@
 /**
  *  Test IP address conversion from a string.
  */
-void CheckFromString(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckFromString)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -768,7 +774,7 @@
 
         IPAddress::FromString(lCurrent->mAddr.mAddrString, test_addr);
 
-        CheckAddressQuartets(inSuite, lCurrent->mAddr, test_addr);
+        CheckAddressQuartets(lCurrent->mAddr, test_addr);
 
         char tmpBuf[INET6_ADDRSTRLEN];
         size_t addrStrLen = strlen(lCurrent->mAddr.mAddrString);
@@ -778,7 +784,7 @@
 
         IPAddress::FromString(tmpBuf, addrStrLen, test_addr);
 
-        CheckAddressQuartets(inSuite, lCurrent->mAddr, test_addr);
+        CheckAddressQuartets(lCurrent->mAddr, test_addr);
 
         ++lCurrent;
     }
@@ -787,11 +793,10 @@
 /**
  *  Test IP address conversion to a string.
  */
-void CheckToString(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckToString)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
     char lAddressBuffer[INET6_ADDRSTRLEN];
     IPAddress lAddress;
 
@@ -812,9 +817,9 @@
         IPAddress::FromString(lCurrent->mAddr.mAddrString, strlen(lCurrent->mAddr.mAddrString), tempIpAddr);
         // Reconvert the expected IPV6 String to an uncompressed string format
         tempIpAddr.ToString(uncompressedAddrStr);
-        CheckAddressString(inSuite, lAddressBuffer, uncompressedAddrStr);
+        CheckAddressString(lAddressBuffer, uncompressedAddrStr);
 #else
-        CheckAddressString(inSuite, lAddressBuffer, lCurrent->mAddr.mAddrString);
+        CheckAddressString(lAddressBuffer, lCurrent->mAddr.mAddrString);
 #endif // CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
         ++lCurrent;
     }
@@ -823,11 +828,10 @@
 /**
  *  Test correct identification of IPv6 ULA addresses.
  */
-void CheckIsIPv6ULA(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIsIPv6ULA)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -835,7 +839,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.IsIPv6ULA() == lCurrent->isIPv6ULA);
+        EXPECT_EQ(test_addr.IsIPv6ULA(), lCurrent->isIPv6ULA);
 
         ++lCurrent;
     }
@@ -844,11 +848,10 @@
 /**
  *  Test correct identification of IPv6 Link Local addresses.
  */
-void CheckIsIPv6LLA(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIsIPv6LLA)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -856,7 +859,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.IsIPv6LinkLocal() == lCurrent->isIPv6LLA);
+        EXPECT_EQ(test_addr.IsIPv6LinkLocal(), lCurrent->isIPv6LLA);
 
         ++lCurrent;
     }
@@ -865,11 +868,10 @@
 /**
  *  Test correct identification of IPv6 multicast addresses.
  */
-void CheckIsIPv6Multicast(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIsIPv6Multicast)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -877,7 +879,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.IsIPv6Multicast() == lCurrent->isIPv6Multicast);
+        EXPECT_EQ(test_addr.IsIPv6Multicast(), lCurrent->isIPv6Multicast);
 
         ++lCurrent;
     }
@@ -886,11 +888,10 @@
 /**
  *  Test correct identification of multicast addresses.
  */
-void CheckIsMulticast(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIsMulticast)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -898,7 +899,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.IsMulticast() == lCurrent->isMulticast);
+        EXPECT_EQ(test_addr.IsMulticast(), lCurrent->isMulticast);
 
         ++lCurrent;
     }
@@ -907,16 +908,15 @@
 /**
  *  Test IPAddress equal operator.
  */
-void CheckOperatorEqual(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckOperatorEqual)
 {
-    const struct TestContext * lContext            = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lFirstCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lFirstEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lFirstCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lFirstEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lFirstCurrent != lFirstEnd)
     {
-        IPAddressExpandedContextIterator lSecondCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-        IPAddressExpandedContextIterator lSecondEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+        IPAddressExpandedContextIterator lSecondCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+        IPAddressExpandedContextIterator lSecondEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
         IPAddress test_addr_1;
 
         SetupIPAddress(test_addr_1, lFirstCurrent);
@@ -929,11 +929,11 @@
 
             if (lFirstCurrent == lSecondCurrent)
             {
-                NL_TEST_ASSERT(inSuite, test_addr_1 == test_addr_2);
+                EXPECT_EQ(test_addr_1, test_addr_2);
             }
             else
             {
-                NL_TEST_ASSERT(inSuite, !(test_addr_1 == test_addr_2));
+                EXPECT_FALSE(test_addr_1 == test_addr_2);
             }
 
             ++lSecondCurrent;
@@ -946,16 +946,15 @@
 /**
  *  Test IPAddress not-equal operator.
  */
-void CheckOperatorNotEqual(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckOperatorNotEqual)
 {
-    const struct TestContext * lContext            = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lFirstCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lFirstEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lFirstCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lFirstEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lFirstCurrent != lFirstEnd)
     {
-        IPAddressExpandedContextIterator lSecondCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-        IPAddressExpandedContextIterator lSecondEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+        IPAddressExpandedContextIterator lSecondCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+        IPAddressExpandedContextIterator lSecondEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
         IPAddress test_addr_1;
 
         SetupIPAddress(test_addr_1, lFirstCurrent);
@@ -968,11 +967,11 @@
 
             if (lFirstCurrent == lSecondCurrent)
             {
-                NL_TEST_ASSERT(inSuite, !(test_addr_1 != test_addr_2));
+                EXPECT_FALSE(test_addr_1 != test_addr_2);
             }
             else
             {
-                NL_TEST_ASSERT(inSuite, test_addr_1 != test_addr_2);
+                EXPECT_NE(test_addr_1, test_addr_2);
             }
 
             ++lSecondCurrent;
@@ -985,16 +984,15 @@
 /**
  *  Test IPAddress assign operator.
  */
-void CheckOperatorAssign(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckOperatorAssign)
 {
-    const struct TestContext * lContext            = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lFirstCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lFirstEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lFirstCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lFirstEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lFirstCurrent != lFirstEnd)
     {
-        IPAddressExpandedContextIterator lSecondCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-        IPAddressExpandedContextIterator lSecondEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+        IPAddressExpandedContextIterator lSecondCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+        IPAddressExpandedContextIterator lSecondEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
         while (lSecondCurrent != lSecondEnd)
         {
@@ -1006,7 +1004,7 @@
             // Use operator to assign IPAddress from test_addr_2 to test_addr_1
             test_addr_1 = test_addr_2;
 
-            CheckAddressQuartets(inSuite, test_addr_1, test_addr_2);
+            CheckAddressQuartets(test_addr_1, test_addr_2);
 
             ++lSecondCurrent;
         }
@@ -1018,11 +1016,10 @@
 /**
  *   Test IPAddress v6 conversion to native representation.
  */
-void CheckToIPv6(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckToIPv6)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1051,7 +1048,7 @@
 #endif
         ip_addr_2 = test_addr.ToIPv6();
 
-        NL_TEST_ASSERT(inSuite, !memcmp(&ip_addr_1, &ip_addr_2, sizeof(ip_addr_1)));
+        EXPECT_EQ(memcmp(&ip_addr_1, &ip_addr_2, sizeof(ip_addr_1)), 0);
 
         ++lCurrent;
     }
@@ -1060,11 +1057,10 @@
 /**
  *   Test native IPv6 conversion into IPAddress.
  */
-void CheckFromIPv6(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckFromIPv6)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1091,7 +1087,7 @@
 #endif
         test_addr_2 = IPAddress(ip_addr);
 
-        CheckAddressQuartets(inSuite, test_addr_1, test_addr_2);
+        CheckAddressQuartets(test_addr_1, test_addr_2);
 
         ++lCurrent;
     }
@@ -1101,11 +1097,10 @@
 /**
  *  Test correct identification of IPv4 addresses.
  */
-void CheckIsIPv4(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIsIPv4)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1113,7 +1108,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.IsIPv4() == lCurrent->isIPv4);
+        EXPECT_EQ(test_addr.IsIPv4(), lCurrent->isIPv4);
 
         ++lCurrent;
     }
@@ -1122,11 +1117,10 @@
 /**
  *  Test correct identification of IPv4 multicast addresses.
  */
-void CheckIsIPv4Multicast(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIsIPv4Multicast)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1134,7 +1128,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.IsIPv4Multicast() == lCurrent->isIPv4Multicast);
+        EXPECT_EQ(test_addr.IsIPv4Multicast(), lCurrent->isIPv4Multicast);
 
         ++lCurrent;
     }
@@ -1143,11 +1137,10 @@
 /**
  *  Test correct identification of IPv4 broadcast addresses.
  */
-void CheckIsIPv4Broadcast(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIsIPv4Broadcast)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1155,7 +1148,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.IsIPv4Broadcast() == lCurrent->isIPv4Broadcast);
+        EXPECT_EQ(test_addr.IsIPv4Broadcast(), lCurrent->isIPv4Broadcast);
 
         ++lCurrent;
     }
@@ -1164,11 +1157,10 @@
 /**
  *   Test IPAddress v4 conversion to native representation.
  */
-void CheckToIPv4(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckToIPv4)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1187,7 +1179,7 @@
 #endif
         ip_addr_2 = test_addr.ToIPv4();
 
-        NL_TEST_ASSERT(inSuite, !memcmp(&ip_addr_1, &ip_addr_2, sizeof(ip_addr_1)));
+        EXPECT_EQ(memcmp(&ip_addr_1, &ip_addr_2, sizeof(ip_addr_1)), 0);
 
         ++lCurrent;
     }
@@ -1196,11 +1188,10 @@
 /**
  *   Test native IPv4 conversion into IPAddress.
  */
-void CheckFromIPv4(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckFromIPv4)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1224,7 +1215,7 @@
 #endif
         test_addr_2 = IPAddress(ip_addr);
 
-        CheckAddressQuartets(inSuite, test_addr_1, test_addr_2);
+        CheckAddressQuartets(test_addr_1, test_addr_2);
 
         ++lCurrent;
     }
@@ -1234,15 +1225,13 @@
 /**
  *   Test IPAddress address conversion from socket.
  */
-void CheckFromSocket(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckFromSocket)
 {
 #if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
-    (void) inSuite;
     // This test is not supported LWIP or OPEN_THREAD_ENDPOINT stacks.
 #else // CHIP_SYSTEM_CONFIG_USE_LWIP
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1290,7 +1279,7 @@
             continue;
         }
 
-        CheckAddressQuartets(inSuite, test_addr_1, test_addr_2);
+        CheckAddressQuartets(test_addr_1, test_addr_2);
 
         ++lCurrent;
     }
@@ -1300,11 +1289,10 @@
 /**
  *  Test IP address type.
  */
-void CheckType(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckType)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1312,7 +1300,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.Type() == lCurrent->mAddr.mAddrType);
+        EXPECT_EQ(test_addr.Type(), lCurrent->mAddr.mAddrType);
 
         ++lCurrent;
     }
@@ -1321,22 +1309,21 @@
 /**
  *  Test the Any address global.
  */
-void CheckAnyAddress(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckAnyAddress)
 {
     const IPAddress test_addr = IPAddress::Any;
     IPAddressType test_type   = test_addr.Type();
 
-    NL_TEST_ASSERT(inSuite, test_type == IPAddressType::kAny);
+    EXPECT_EQ(test_type, IPAddressType::kAny);
 }
 
 /**
  *  Test IP address interface ID.
  */
-void CheckInterface(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckInterface)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1344,7 +1331,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.InterfaceId() == lCurrent->interface);
+        EXPECT_EQ(test_addr.InterfaceId(), lCurrent->interface);
 
         ++lCurrent;
     }
@@ -1353,11 +1340,10 @@
 /**
  *  Test IP address subnet.
  */
-void CheckSubnet(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckSubnet)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1365,7 +1351,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.Subnet() == lCurrent->subnet);
+        EXPECT_EQ(test_addr.Subnet(), lCurrent->subnet);
 
         ++lCurrent;
     }
@@ -1374,11 +1360,10 @@
 /**
  *  Test IP address global ID.
  */
-void CheckGlobal(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckGlobal)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1386,7 +1371,7 @@
 
         SetupIPAddress(test_addr, lCurrent);
 
-        NL_TEST_ASSERT(inSuite, test_addr.GlobalId() == lCurrent->global);
+        EXPECT_EQ(test_addr.GlobalId(), lCurrent->global);
 
         ++lCurrent;
     }
@@ -1395,11 +1380,10 @@
 /**
  *  Test address encoding with chip::Encoding.
  */
-void CheckEncoding(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckEncoding)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1415,25 +1399,25 @@
         test_addr.WriteAddress(p);
 
         // buffer has address in network byte order
-        NL_TEST_ASSERT(inSuite, buffer[3] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[0]));
-        NL_TEST_ASSERT(inSuite, buffer[2] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[0] >> 8));
-        NL_TEST_ASSERT(inSuite, buffer[1] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[0] >> 16));
-        NL_TEST_ASSERT(inSuite, buffer[0] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[0] >> 24));
+        EXPECT_EQ(buffer[3], (uint8_t) (lCurrent->mAddr.mAddrQuartets[0]));
+        EXPECT_EQ(buffer[2], (uint8_t) (lCurrent->mAddr.mAddrQuartets[0] >> 8));
+        EXPECT_EQ(buffer[1], (uint8_t) (lCurrent->mAddr.mAddrQuartets[0] >> 16));
+        EXPECT_EQ(buffer[0], (uint8_t) (lCurrent->mAddr.mAddrQuartets[0] >> 24));
 
-        NL_TEST_ASSERT(inSuite, buffer[7] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[1]));
-        NL_TEST_ASSERT(inSuite, buffer[6] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[1] >> 8));
-        NL_TEST_ASSERT(inSuite, buffer[5] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[1] >> 16));
-        NL_TEST_ASSERT(inSuite, buffer[4] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[1] >> 24));
+        EXPECT_EQ(buffer[7], (uint8_t) (lCurrent->mAddr.mAddrQuartets[1]));
+        EXPECT_EQ(buffer[6], (uint8_t) (lCurrent->mAddr.mAddrQuartets[1] >> 8));
+        EXPECT_EQ(buffer[5], (uint8_t) (lCurrent->mAddr.mAddrQuartets[1] >> 16));
+        EXPECT_EQ(buffer[4], (uint8_t) (lCurrent->mAddr.mAddrQuartets[1] >> 24));
 
-        NL_TEST_ASSERT(inSuite, buffer[11] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[2]));
-        NL_TEST_ASSERT(inSuite, buffer[10] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[2] >> 8));
-        NL_TEST_ASSERT(inSuite, buffer[9] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[2] >> 16));
-        NL_TEST_ASSERT(inSuite, buffer[8] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[2] >> 24));
+        EXPECT_EQ(buffer[11], (uint8_t) (lCurrent->mAddr.mAddrQuartets[2]));
+        EXPECT_EQ(buffer[10], (uint8_t) (lCurrent->mAddr.mAddrQuartets[2] >> 8));
+        EXPECT_EQ(buffer[9], (uint8_t) (lCurrent->mAddr.mAddrQuartets[2] >> 16));
+        EXPECT_EQ(buffer[8], (uint8_t) (lCurrent->mAddr.mAddrQuartets[2] >> 24));
 
-        NL_TEST_ASSERT(inSuite, buffer[15] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[3]));
-        NL_TEST_ASSERT(inSuite, buffer[14] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[3] >> 8));
-        NL_TEST_ASSERT(inSuite, buffer[13] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[3] >> 16));
-        NL_TEST_ASSERT(inSuite, buffer[12] == (uint8_t) (lCurrent->mAddr.mAddrQuartets[3] >> 24));
+        EXPECT_EQ(buffer[15], (uint8_t) (lCurrent->mAddr.mAddrQuartets[3]));
+        EXPECT_EQ(buffer[14], (uint8_t) (lCurrent->mAddr.mAddrQuartets[3] >> 8));
+        EXPECT_EQ(buffer[13], (uint8_t) (lCurrent->mAddr.mAddrQuartets[3] >> 16));
+        EXPECT_EQ(buffer[12], (uint8_t) (lCurrent->mAddr.mAddrQuartets[3] >> 24));
 
         ++lCurrent;
     }
@@ -1442,11 +1426,10 @@
 /**
  *  Test address decoding with chip::Decoding.
  */
-void CheckDecoding(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckDecoding)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1468,7 +1451,7 @@
         // Call ReadAddress function that we test.
         IPAddress::ReadAddress(const_cast<const uint8_t *&>(p), test_addr_2);
 
-        CheckAddressQuartets(inSuite, test_addr_1, test_addr_2);
+        CheckAddressQuartets(test_addr_1, test_addr_2);
 
         ++lCurrent;
     }
@@ -1477,11 +1460,10 @@
 /**
  *  Test address symmetricity of encoding and decoding with chip::(De/En)code.
  */
-void CheckEcodeDecodeSymmetricity(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckEcodeDecodeSymmetricity)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1504,7 +1486,7 @@
         // Call ReadAddress function that we test.
         IPAddress::ReadAddress(const_cast<const uint8_t *&>(p), test_addr_2);
 
-        CheckAddressQuartets(inSuite, test_addr_1, test_addr_2);
+        CheckAddressQuartets(test_addr_1, test_addr_2);
 
         ++lCurrent;
     }
@@ -1513,11 +1495,10 @@
 /**
  *  Test assembling ULA address.
  */
-void CheckMakeULA(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckMakeULA)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1526,13 +1507,11 @@
         // Call MakeULA function that we test.
         test_addr = IPAddress::MakeULA(lCurrent->global, lCurrent->subnet, lCurrent->interface);
 
-        NL_TEST_ASSERT(
-            inSuite, test_addr.Addr[0] == htonl(static_cast<uint32_t>(ULA_PREFIX | (lCurrent->global & ULA_UP_24_BIT_MASK) >> 16)));
-        NL_TEST_ASSERT(inSuite,
-                       test_addr.Addr[1] ==
-                           htonl(static_cast<uint32_t>((lCurrent->global & ULA_LO_16_BIT_MASK) << 16 | lCurrent->subnet)));
-        NL_TEST_ASSERT(inSuite, test_addr.Addr[2] == htonl(static_cast<uint32_t>(lCurrent->interface >> 32)));
-        NL_TEST_ASSERT(inSuite, test_addr.Addr[3] == htonl(static_cast<uint32_t>(lCurrent->interface)));
+        EXPECT_EQ(test_addr.Addr[0], htonl(static_cast<uint32_t>(ULA_PREFIX | (lCurrent->global & ULA_UP_24_BIT_MASK) >> 16)));
+        EXPECT_EQ(test_addr.Addr[1],
+                  htonl(static_cast<uint32_t>((lCurrent->global & ULA_LO_16_BIT_MASK) << 16 | lCurrent->subnet)));
+        EXPECT_EQ(test_addr.Addr[2], htonl(static_cast<uint32_t>(lCurrent->interface >> 32)));
+        EXPECT_EQ(test_addr.Addr[3], htonl(static_cast<uint32_t>(lCurrent->interface)));
 
         ++lCurrent;
     }
@@ -1541,11 +1520,10 @@
 /**
  *  Test assembling LLA address.
  */
-void CheckMakeLLA(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckMakeLLA)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
 
     while (lCurrent != lEnd)
     {
@@ -1554,20 +1532,19 @@
         // Call MakeLLA function that we test.
         test_addr = IPAddress::MakeLLA(lCurrent->interface);
 
-        NL_TEST_ASSERT(inSuite, test_addr.Addr[0] == htonl(LLA_PREFIX));
-        NL_TEST_ASSERT(inSuite, test_addr.Addr[1] == 0);
-        NL_TEST_ASSERT(inSuite, test_addr.Addr[2] == htonl(static_cast<uint32_t>(lCurrent->interface >> 32)));
-        NL_TEST_ASSERT(inSuite, test_addr.Addr[3] == htonl(static_cast<uint32_t>(lCurrent->interface)));
+        EXPECT_EQ(test_addr.Addr[0], htonl(LLA_PREFIX));
+        EXPECT_EQ(test_addr.Addr[1], 0u);
+        EXPECT_EQ(test_addr.Addr[2], htonl(static_cast<uint32_t>(lCurrent->interface >> 32)));
+        EXPECT_EQ(test_addr.Addr[3], htonl(static_cast<uint32_t>(lCurrent->interface)));
 
         ++lCurrent;
     }
 }
 
-void CheckMakeIPv6WellKnownMulticast(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckMakeIPv6WellKnownMulticast)
 {
-    const struct TestContext * lContext = static_cast<const struct TestContext *>(inContext);
-    IPAddressContextIterator lCurrent   = lContext->mIPv6WellKnownMulticastContextRange.mBegin;
-    IPAddressContextIterator lEnd       = lContext->mIPv6WellKnownMulticastContextRange.mEnd;
+    IPAddressContextIterator lCurrent = pTestContext->mIPv6WellKnownMulticastContextRange.mBegin;
+    IPAddressContextIterator lEnd     = pTestContext->mIPv6WellKnownMulticastContextRange.mEnd;
     size_t lGroupIndex;
     size_t lScopeIndex;
     IPAddress lAddress;
@@ -1583,7 +1560,7 @@
 
                 lAddress = IPAddress::MakeIPv6WellKnownMulticast(lScope, lGroup);
 
-                CheckAddress(inSuite, *lCurrent, lAddress);
+                CheckAddress(*lCurrent, lAddress);
 
                 ++lCurrent;
             }
@@ -1591,11 +1568,10 @@
     }
 }
 
-void CheckMakeIPv6TransientMulticast(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckMakeIPv6TransientMulticast)
 {
-    const struct TestContext * lContext = static_cast<const struct TestContext *>(inContext);
-    IPAddressContextIterator lCurrent   = lContext->mIPv6TransientMulticastContextRange.mBegin;
-    IPAddressContextIterator lEnd       = lContext->mIPv6TransientMulticastContextRange.mEnd;
+    IPAddressContextIterator lCurrent = pTestContext->mIPv6TransientMulticastContextRange.mBegin;
+    IPAddressContextIterator lEnd     = pTestContext->mIPv6TransientMulticastContextRange.mEnd;
     constexpr IPv6MulticastFlags lFlags;
     size_t lScopeIndex;
     IPAddress lAddress;
@@ -1612,7 +1588,7 @@
 
             lAddress = IPAddress::MakeIPv6TransientMulticast(lFlags, lScope, lGroup);
 
-            CheckAddress(inSuite, *lCurrent, lAddress);
+            CheckAddress(*lCurrent, lAddress);
 
             ++lCurrent;
         }
@@ -1627,18 +1603,17 @@
 
             lAddress = IPAddress::MakeIPv6TransientMulticast(lFlags, lScope, lGroup);
 
-            CheckAddress(inSuite, *lCurrent, lAddress);
+            CheckAddress(*lCurrent, lAddress);
 
             ++lCurrent;
         }
     }
 }
 
-void CheckMakeIPv6PrefixMulticast(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckMakeIPv6PrefixMulticast)
 {
-    const struct TestContext * lContext = static_cast<const struct TestContext *>(inContext);
-    IPAddressContextIterator lCurrent   = lContext->mIPv6PrefixMulticastContextRange.mBegin;
-    IPAddressContextIterator lEnd       = lContext->mIPv6PrefixMulticastContextRange.mEnd;
+    IPAddressContextIterator lCurrent = pTestContext->mIPv6PrefixMulticastContextRange.mBegin;
+    IPAddressContextIterator lEnd     = pTestContext->mIPv6PrefixMulticastContextRange.mEnd;
     uint8_t lPrefixLength;
     uint64_t lPrefix;
     uint32_t lGroup;
@@ -1659,7 +1634,7 @@
 
             lAddress = IPAddress::MakeIPv6PrefixMulticast(lScope, lPrefixLength, lPrefix, lGroup);
 
-            CheckAddress(inSuite, *lCurrent, lAddress);
+            CheckAddress(*lCurrent, lAddress);
 
             ++lCurrent;
         }
@@ -1676,7 +1651,7 @@
 
             lAddress = IPAddress::MakeIPv6PrefixMulticast(lScope, lPrefixLength, lPrefix, lGroup);
 
-            CheckAddress(inSuite, *lCurrent, lAddress);
+            CheckAddress(*lCurrent, lAddress);
 
             ++lCurrent;
         }
@@ -1693,7 +1668,7 @@
 
             lAddress = IPAddress::MakeIPv6PrefixMulticast(lScope, lPrefixLength, lPrefix, lGroup);
 
-            CheckAddress(inSuite, *lCurrent, lAddress);
+            CheckAddress(*lCurrent, lAddress);
 
             ++lCurrent;
         }
@@ -1710,7 +1685,7 @@
 
             lAddress = IPAddress::MakeIPv6PrefixMulticast(lScope, lPrefixLength, lPrefix, lGroup);
 
-            CheckAddress(inSuite, *lCurrent, lAddress);
+            CheckAddress(*lCurrent, lAddress);
 
             ++lCurrent;
         }
@@ -1720,11 +1695,10 @@
 /**
  *  Test IPPrefix.
  */
-void CheckIPPrefix(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckIPPrefix)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
     size_t i                                  = 0;
 
     while (lCurrent != lEnd)
@@ -1738,12 +1712,12 @@
         ipprefix_1.Length = static_cast<uint8_t>(128 - (i++ % 128));
         ipprefix_2        = ipprefix_1;
 
-        NL_TEST_ASSERT(inSuite, !ipprefix_1.IsZero());
-        NL_TEST_ASSERT(inSuite, !ipprefix_2.IsZero());
-        NL_TEST_ASSERT(inSuite, ipprefix_1 == ipprefix_2);
-        NL_TEST_ASSERT(inSuite, !(ipprefix_1 != ipprefix_2));
+        EXPECT_FALSE(ipprefix_1.IsZero());
+        EXPECT_FALSE(ipprefix_2.IsZero());
+        EXPECT_EQ(ipprefix_1, ipprefix_2);
+        EXPECT_FALSE(ipprefix_1 != ipprefix_2);
 #if !CHIP_SYSTEM_CONFIG_USE_LWIP
-        NL_TEST_ASSERT(inSuite, ipprefix_1.MatchAddress(test_addr_1));
+        EXPECT_TRUE(ipprefix_1.MatchAddress(test_addr_1));
 #endif
         ++lCurrent;
     }
@@ -1774,11 +1748,10 @@
 /**
  * Test ToLwIPAddress()
  */
-void CheckToLwIPAddr(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetAddress, TestCheckToLwIPAddr)
 {
-    const struct TestContext * lContext       = static_cast<const struct TestContext *>(inContext);
-    IPAddressExpandedContextIterator lCurrent = lContext->mIPAddressExpandedContextRange.mBegin;
-    IPAddressExpandedContextIterator lEnd     = lContext->mIPAddressExpandedContextRange.mEnd;
+    IPAddressExpandedContextIterator lCurrent = pTestContext->mIPAddressExpandedContextRange.mBegin;
+    IPAddressExpandedContextIterator lEnd     = pTestContext->mIPAddressExpandedContextRange.mEnd;
     CHIP_ERROR err;
     ip_addr_t lwip_expected_addr, lwip_check_addr;
 
@@ -1793,18 +1766,18 @@
         {
             ip_addr_copy_from_ip4(lwip_expected_addr, test_addr.ToIPv4());
             lwip_check_addr = test_addr.ToLwIPAddr();
-            NL_TEST_ASSERT(inSuite, sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
+            EXPECT_TRUE(sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
 
             err = test_addr.ToLwIPAddr(IPAddressType::kAny, lwip_check_addr);
-            NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-            NL_TEST_ASSERT(inSuite, sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
+            EXPECT_EQ(err, CHIP_NO_ERROR);
+            EXPECT_TRUE(sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
 
             err = test_addr.ToLwIPAddr(IPAddressType::kIPv4, lwip_check_addr);
-            NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-            NL_TEST_ASSERT(inSuite, sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
+            EXPECT_EQ(err, CHIP_NO_ERROR);
+            EXPECT_TRUE(sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
 
             err = test_addr.ToLwIPAddr(IPAddressType::kIPv6, lwip_check_addr);
-            NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+            EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
         }
         else
 #endif // INET_CONFIG_ENABLE_IPV4
@@ -1812,38 +1785,38 @@
             {
                 ip_addr_copy_from_ip6(lwip_expected_addr, test_addr.ToIPv6());
                 lwip_check_addr = test_addr.ToLwIPAddr();
-                NL_TEST_ASSERT(inSuite, sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
+                EXPECT_TRUE(sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
 
                 err = test_addr.ToLwIPAddr(IPAddressType::kAny, lwip_check_addr);
-                NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-                NL_TEST_ASSERT(inSuite, sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
+                EXPECT_EQ(err, CHIP_NO_ERROR);
+                EXPECT_TRUE(sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
 
                 err = test_addr.ToLwIPAddr(IPAddressType::kIPv6, lwip_check_addr);
-                NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-                NL_TEST_ASSERT(inSuite, sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
+                EXPECT_EQ(err, CHIP_NO_ERROR);
+                EXPECT_TRUE(sameLwIPAddress(lwip_expected_addr, lwip_check_addr));
 
 #if INET_CONFIG_ENABLE_IPV4
                 err = test_addr.ToLwIPAddr(IPAddressType::kIPv4, lwip_check_addr);
-                NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+                EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
 #endif // INET_CONFIG_ENABLE_IPV4
             }
             else if (lCurrent->mAddr.mAddrType == IPAddressType::kAny)
             {
                 lwip_check_addr = test_addr.ToLwIPAddr();
-                NL_TEST_ASSERT(inSuite, sameLwIPAddress(*IP6_ADDR_ANY, lwip_check_addr));
+                EXPECT_TRUE(sameLwIPAddress(*IP6_ADDR_ANY, lwip_check_addr));
 
                 err = test_addr.ToLwIPAddr(IPAddressType::kAny, lwip_check_addr);
-                NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-                NL_TEST_ASSERT(inSuite, sameLwIPAddress(*IP6_ADDR_ANY, lwip_check_addr));
+                EXPECT_EQ(err, CHIP_NO_ERROR);
+                EXPECT_TRUE(sameLwIPAddress(*IP6_ADDR_ANY, lwip_check_addr));
 
                 err = test_addr.ToLwIPAddr(IPAddressType::kIPv6, lwip_check_addr);
-                NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-                NL_TEST_ASSERT(inSuite, sameLwIPAddress(*IP6_ADDR_ANY, lwip_check_addr));
+                EXPECT_EQ(err, CHIP_NO_ERROR);
+                EXPECT_TRUE(sameLwIPAddress(*IP6_ADDR_ANY, lwip_check_addr));
 
 #if INET_CONFIG_ENABLE_IPV4
                 err = test_addr.ToLwIPAddr(IPAddressType::kIPv4, lwip_check_addr);
-                NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-                NL_TEST_ASSERT(inSuite, sameLwIPAddress(*IP4_ADDR_ANY, lwip_check_addr));
+                EXPECT_EQ(err, CHIP_NO_ERROR);
+                EXPECT_TRUE(sameLwIPAddress(*IP4_ADDR_ANY, lwip_check_addr));
 #endif // INET_CONFIG_ENABLE_IPV4
             }
 
@@ -1852,86 +1825,4 @@
 }
 #endif // CHIP_SYSTEM_CONFIG_USE_LWIP
 
-/**
- *   Test Suite. It lists all the test functions.
- */
-
-// clang-format off
-const nlTest sTests[] =
-{
-    NL_TEST_DEF("Address Type",                                CheckType),
-    NL_TEST_DEF("Any Address Global",                          CheckAnyAddress),
-    NL_TEST_DEF("Address Encoding (Writing)",                  CheckEncoding),
-    NL_TEST_DEF("Address Decoding (Reading)",                  CheckDecoding),
-    NL_TEST_DEF("Address Encode / Decode Symmetricity",        CheckEcodeDecodeSymmetricity),
-    NL_TEST_DEF("From String Conversion",                      CheckFromString),
-    NL_TEST_DEF("To String Conversion",                        CheckToString),
-#if INET_CONFIG_ENABLE_IPV4
-    NL_TEST_DEF("IPv4 Detection",                              CheckIsIPv4),
-    NL_TEST_DEF("IPv4 Multicast Detection",                    CheckIsIPv4Multicast),
-    NL_TEST_DEF("IPv4 Broadcast Detection",                    CheckIsIPv4Broadcast),
-    NL_TEST_DEF("Convert IPv4 to IPAddress",                   CheckFromIPv4),
-    NL_TEST_DEF("Convert IPAddress to IPv4",                   CheckToIPv4),
-#endif // INET_CONFIG_ENABLE_IPV4
-    NL_TEST_DEF("IPv6 ULA Detection",                          CheckIsIPv6ULA),
-    NL_TEST_DEF("IPv6 Link Local Detection",                   CheckIsIPv6LLA),
-    NL_TEST_DEF("IPv6 Multicast Detection",                    CheckIsIPv6Multicast),
-    NL_TEST_DEF("Multicast Detection",                         CheckIsMulticast),
-    NL_TEST_DEF("Equivalence Operator",                        CheckOperatorEqual),
-    NL_TEST_DEF("Non-Equivalence Operator",                    CheckOperatorNotEqual),
-    NL_TEST_DEF("Assign Operator",                             CheckOperatorAssign),
-    NL_TEST_DEF("Convert IPv6 to IPAddress",                   CheckFromIPv6),
-    NL_TEST_DEF("Convert IPAddress to IPv6",                   CheckToIPv6),
-    NL_TEST_DEF("Assign address from socket",                  CheckFromSocket),
-    NL_TEST_DEF("Address Interface ID",                        CheckInterface),
-    NL_TEST_DEF("Address Subnet",                              CheckSubnet),
-    NL_TEST_DEF("Address Global ID",                           CheckGlobal),
-    NL_TEST_DEF("Assemble IPv6 ULA address",                   CheckMakeULA),
-    NL_TEST_DEF("Assemble IPv6 LLA address",                   CheckMakeLLA),
-    NL_TEST_DEF("Assemble IPv6 Well-known Multicast address",  CheckMakeIPv6WellKnownMulticast),
-    NL_TEST_DEF("Assemble IPv6 Transient Multicast address",   CheckMakeIPv6TransientMulticast),
-    NL_TEST_DEF("Assemble IPv6 Prefix Multicast address",      CheckMakeIPv6PrefixMulticast),
-    NL_TEST_DEF("IPPrefix test",                               CheckIPPrefix),
-#if CHIP_SYSTEM_CONFIG_USE_LWIP
-    NL_TEST_DEF("Convert IPAddress to LwIP address",           CheckToLwIPAddr),
-#endif
-    NL_TEST_SENTINEL()
-};
-// clang-format on
-
-/**
- *  Set up the test suite.
- */
-int TestSetup(void * inContext)
-{
-    return (SUCCESS);
-}
-
-/**
- *  Tear down the test suite.
- */
-int TestTeardown(void * inContext)
-{
-    return (SUCCESS);
-}
-
 } // namespace
-
-int TestInetAddress()
-{
-    // clang-format off
-    nlTestSuite theSuite = {
-        "inet-address",
-        &sTests[0],
-        TestSetup,
-        TestTeardown
-    };
-    // clang-format on
-
-    // Run test suite against one context.
-    nlTestRunner(&theSuite, const_cast<TestContext *>(&sTestContext));
-
-    return (nlTestRunnerStats(&theSuite));
-}
-
-CHIP_REGISTER_TEST_SUITE(TestInetAddress)
diff --git a/src/inet/tests/TestInetEndPoint.cpp b/src/inet/tests/TestInetEndPoint.cpp
index f168438..3e6f613 100644
--- a/src/inet/tests/TestInetEndPoint.cpp
+++ b/src/inet/tests/TestInetEndPoint.cpp
@@ -29,21 +29,16 @@
 #include <stdint.h>
 #include <string.h>
 
-#include <CHIPVersion.h>
+#include <gtest/gtest.h>
 
+#include <CHIPVersion.h>
 #include <inet/IPPrefix.h>
 #include <inet/InetError.h>
-
 #include <lib/support/CHIPArgParser.hpp>
 #include <lib/support/CHIPMem.h>
 #include <lib/support/CodeUtils.h>
-#include <lib/support/UnitTestContext.h>
-#include <lib/support/UnitTestRegistration.h>
-
 #include <system/SystemError.h>
 
-#include <nlunit-test.h>
-
 #include "TestInetCommon.h"
 #include "TestSetupSignalling.h"
 
@@ -75,8 +70,24 @@
     printf("    timer handler\n");
 }
 
+class TestInetEndPoint : public ::testing::Test
+{
+public:
+    static void SetUpTestSuite()
+    {
+        SetSIGUSR1Handler();
+        ASSERT_EQ(chip::Platform::MemoryInit(), CHIP_NO_ERROR);
+    }
+    static void TearDownTestSuite()
+    {
+        ShutdownNetwork();
+        ShutdownSystemLayer();
+        chip::Platform::MemoryShutdown();
+    }
+};
+
 // Test before init network, Inet is not initialized
-static void TestInetPre(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetEndPoint, TestInetPre)
 {
 #if INET_CONFIG_ENABLE_UDP_ENDPOINT
     UDPEndPoint * testUDPEP = nullptr;
@@ -95,32 +106,32 @@
 
 #if INET_CONFIG_ENABLE_UDP_ENDPOINT
     err = gUDP.NewEndPoint(&testUDPEP);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
 #endif // INET_CONFIG_ENABLE_UDP_ENDPOINT
 
 #if INET_CONFIG_ENABLE_TCP_ENDPOINT
     err = gTCP.NewEndPoint(&testTCPEP);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
 #endif // INET_CONFIG_ENABLE_TCP_ENDPOINT
 
     err = gSystemLayer.StartTimer(10_ms32, HandleTimer, nullptr);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
 
     // then init network
     InitSystemLayer();
     InitNetwork();
 }
 
-static void TestInetError(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetEndPoint, TestInetError)
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
 
     err = CHIP_ERROR_POSIX(EPERM);
-    NL_TEST_ASSERT(inSuite, DescribeErrorPOSIX(err));
-    NL_TEST_ASSERT(inSuite, err.IsRange(ChipError::Range::kPOSIX));
+    EXPECT_TRUE(DescribeErrorPOSIX(err));
+    EXPECT_TRUE(err.IsRange(ChipError::Range::kPOSIX));
 }
 
-static void TestInetInterface(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetEndPoint, TestInetInterface)
 {
     InterfaceIterator intIterator;
     InterfaceAddressIterator addrIterator;
@@ -138,29 +149,30 @@
 #ifndef __MBED__
     // Mbed interface name has different format
     err = InterfaceId::InterfaceNameToId("0", intId);
-    NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR);
+    EXPECT_NE(err, CHIP_NO_ERROR);
 #endif
 
     err = InterfaceId::Null().GetInterfaceName(intName, 0);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_BUFFER_TOO_SMALL);
+    EXPECT_EQ(err, CHIP_ERROR_BUFFER_TOO_SMALL);
 
     err = InterfaceId::Null().GetInterfaceName(intName, sizeof(intName));
-    NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR && intName[0] == '\0');
+    EXPECT_EQ(err, CHIP_NO_ERROR);
+    EXPECT_EQ(intName[0], '\0');
 
     intId = InterfaceId::FromIPAddress(addr);
-    NL_TEST_ASSERT(inSuite, !intId.IsPresent());
+    EXPECT_FALSE(intId.IsPresent());
 
     err = intId.GetLinkLocalAddr(nullptr);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INVALID_ARGUMENT);
+    EXPECT_EQ(err, CHIP_ERROR_INVALID_ARGUMENT);
 
     printf("    Interfaces:\n");
     for (; intIterator.HasCurrent(); intIterator.Next())
     {
         intId = intIterator.GetInterfaceId();
-        NL_TEST_ASSERT(inSuite, intId.IsPresent());
+        EXPECT_TRUE(intId.IsPresent());
         memset(intName, 42, sizeof(intName));
         err = intIterator.GetInterfaceName(intName, sizeof(intName));
-        NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
+        EXPECT_EQ(err, CHIP_NO_ERROR);
         printf("     interface id: 0x%" PRIxPTR ", interface name: %s, interface state: %s, %s multicast, %s broadcast addr\n",
 #if CHIP_SYSTEM_CONFIG_USE_LWIP
                reinterpret_cast<uintptr_t>(intId.GetPlatformInterface()),
@@ -175,47 +187,44 @@
 
         // Not all platforms support getting interface type and hardware address
         err = intIterator.GetInterfaceType(intType);
-        NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR || err == CHIP_ERROR_NOT_IMPLEMENTED);
+        EXPECT_TRUE(err == CHIP_NO_ERROR || err == CHIP_ERROR_NOT_IMPLEMENTED);
 
         err = intIterator.GetHardwareAddress(intHwAddress, intHwAddressSize, sizeof(intHwAddress));
-        NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR || err == CHIP_ERROR_NOT_IMPLEMENTED);
+        EXPECT_TRUE(err == CHIP_NO_ERROR || err == CHIP_ERROR_NOT_IMPLEMENTED);
         if (err == CHIP_NO_ERROR)
         {
-            NL_TEST_ASSERT(inSuite, intHwAddressSize == 6 || intHwAddressSize == 8);
-            NL_TEST_ASSERT(inSuite,
-                           intIterator.GetHardwareAddress(nullptr, intHwAddressSize, sizeof(intHwAddress)) ==
-                               CHIP_ERROR_INVALID_ARGUMENT);
-            NL_TEST_ASSERT(inSuite,
-                           intIterator.GetHardwareAddress(intHwAddress, intHwAddressSize, 4) == CHIP_ERROR_BUFFER_TOO_SMALL);
+            EXPECT_TRUE(intHwAddressSize == 6 || intHwAddressSize == 8);
+            EXPECT_EQ(intIterator.GetHardwareAddress(nullptr, intHwAddressSize, sizeof(intHwAddress)), CHIP_ERROR_INVALID_ARGUMENT);
+            EXPECT_EQ(intIterator.GetHardwareAddress(intHwAddress, intHwAddressSize, 4), CHIP_ERROR_BUFFER_TOO_SMALL);
         }
     }
 
-    NL_TEST_ASSERT(inSuite, !intIterator.Next());
-    NL_TEST_ASSERT(inSuite, intIterator.GetInterfaceId() == InterfaceId::Null());
-    NL_TEST_ASSERT(inSuite, intIterator.GetInterfaceName(intName, sizeof(intName)) == CHIP_ERROR_INCORRECT_STATE);
-    NL_TEST_ASSERT(inSuite, !intIterator.SupportsMulticast());
-    NL_TEST_ASSERT(inSuite, !intIterator.HasBroadcastAddress());
+    EXPECT_FALSE(intIterator.Next());
+    EXPECT_EQ(intIterator.GetInterfaceId(), InterfaceId::Null());
+    EXPECT_EQ(intIterator.GetInterfaceName(intName, sizeof(intName)), CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_FALSE(intIterator.SupportsMulticast());
+    EXPECT_FALSE(intIterator.HasBroadcastAddress());
 
     // Not all platforms support getting interface type and hardware address
     err = intIterator.GetInterfaceType(intType);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE || err == CHIP_ERROR_NOT_IMPLEMENTED);
+    EXPECT_TRUE(err == CHIP_ERROR_INCORRECT_STATE || err == CHIP_ERROR_NOT_IMPLEMENTED);
     err = intIterator.GetHardwareAddress(intHwAddress, intHwAddressSize, sizeof(intHwAddress));
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE || err == CHIP_ERROR_NOT_IMPLEMENTED);
+    EXPECT_TRUE(err == CHIP_ERROR_INCORRECT_STATE || err == CHIP_ERROR_NOT_IMPLEMENTED);
 
     printf("    Addresses:\n");
     for (; addrIterator.HasCurrent(); addrIterator.Next())
     {
         err = addrIterator.GetAddress(addr);
-        NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
+        EXPECT_EQ(err, CHIP_NO_ERROR);
         IPPrefix addrWithPrefix(addr, addrIterator.GetPrefixLength());
         char addrStr[80];
         addrWithPrefix.IPAddr.ToString(addrStr);
         intId = addrIterator.GetInterfaceId();
-        NL_TEST_ASSERT(inSuite, intId.IsPresent());
+        EXPECT_TRUE(intId.IsPresent());
         memset(intName, 42, sizeof(intName));
         err = addrIterator.GetInterfaceName(intName, sizeof(intName));
-        NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
-        NL_TEST_ASSERT(inSuite, intName[0] != '\0' && memchr(intName, '\0', sizeof(intName)) != nullptr);
+        EXPECT_EQ(err, CHIP_NO_ERROR);
+        EXPECT_TRUE(intName[0] != '\0' && memchr(intName, '\0', sizeof(intName)) != nullptr);
         printf("     %s/%d, interface id: 0x%" PRIxPTR
                ", interface name: %s, interface state: %s, %s multicast, %s broadcast addr\n",
                addrStr, addrWithPrefix.Length,
@@ -227,15 +236,15 @@
                intName, addrIterator.IsUp() ? "UP" : "DOWN", addrIterator.SupportsMulticast() ? "supports" : "no",
                addrIterator.HasBroadcastAddress() ? "has" : "no");
     }
-    NL_TEST_ASSERT(inSuite, !addrIterator.Next());
-    NL_TEST_ASSERT(inSuite, addrIterator.GetAddress(addr) == CHIP_ERROR_SENTINEL);
-    NL_TEST_ASSERT(inSuite, addrIterator.GetInterfaceId() == InterfaceId::Null());
-    NL_TEST_ASSERT(inSuite, addrIterator.GetInterfaceName(intName, sizeof(intName)) == CHIP_ERROR_INCORRECT_STATE);
-    NL_TEST_ASSERT(inSuite, !addrIterator.SupportsMulticast());
-    NL_TEST_ASSERT(inSuite, !addrIterator.HasBroadcastAddress());
+    EXPECT_FALSE(addrIterator.Next());
+    EXPECT_EQ(addrIterator.GetAddress(addr), CHIP_ERROR_SENTINEL);
+    EXPECT_EQ(addrIterator.GetInterfaceId(), InterfaceId::Null());
+    EXPECT_EQ(addrIterator.GetInterfaceName(intName, sizeof(intName)), CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_FALSE(addrIterator.SupportsMulticast());
+    EXPECT_FALSE(addrIterator.HasBroadcastAddress());
 }
 
-static void TestInetEndPointInternal(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetEndPoint, TestInetEndPointInternal)
 {
     CHIP_ERROR err;
     IPAddress addr_any = IPAddress::Any;
@@ -253,113 +262,110 @@
     // init all the EndPoints
     SYSTEM_STATS_RESET(System::Stats::kInetLayer_NumUDPEps);
     err = gUDP.NewEndPoint(&testUDPEP);
-    NL_TEST_EXIT_ON_FAILED_ASSERT(inSuite, err == CHIP_NO_ERROR);
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 1));
+    ASSERT_EQ(err, CHIP_NO_ERROR);
+    EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 1));
 
     SYSTEM_STATS_RESET(System::Stats::kInetLayer_NumTCPEps);
     err = gTCP.NewEndPoint(&testTCPEP1);
-    NL_TEST_EXIT_ON_FAILED_ASSERT(inSuite, err == CHIP_NO_ERROR);
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 1));
+    ASSERT_EQ(err, CHIP_NO_ERROR);
+    EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 1));
 
     err = InterfaceId::Null().GetLinkLocalAddr(&addr);
 
     // We should skip the following checks if the interface does not have the Link local address
-    if (err == INET_ERROR_ADDRESS_NOT_FOUND)
-    {
-        return;
-    }
+    ASSERT_NE(err, INET_ERROR_ADDRESS_NOT_FOUND);
 
-    NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
+    EXPECT_EQ(err, CHIP_NO_ERROR);
     intId = InterfaceId::FromIPAddress(addr);
-    NL_TEST_ASSERT(inSuite, intId.IsPresent());
+    EXPECT_TRUE(intId.IsPresent());
 
 #if INET_CONFIG_ENABLE_IPV4
-    NL_TEST_ASSERT(inSuite, IPAddress::FromString("10.0.0.1", addr_v4));
+    EXPECT_TRUE(IPAddress::FromString("10.0.0.1", addr_v4));
 #endif // INET_CONFIG_ENABLE_IPV4
 
     // UdpEndPoint special cases to cover the error branch
     err = testUDPEP->Listen(nullptr /*OnMessageReceived*/, nullptr /*OnReceiveError*/);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     err = testUDPEP->Bind(IPAddressType::kUnknown, addr_any, 3000);
-    NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+    EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
     err = testUDPEP->Bind(IPAddressType::kUnknown, addr, 3000);
-    NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+    EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
 #if INET_CONFIG_ENABLE_IPV4
     err = testUDPEP->Bind(IPAddressType::kIPv4, addr, 3000);
-    NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+    EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
 #endif // INET_CONFIG_ENABLE_IPV4
 
     err            = testUDPEP->Bind(IPAddressType::kIPv6, addr, 3000, intId);
     err            = testUDPEP->BindInterface(IPAddressType::kIPv6, intId);
     InterfaceId id = testUDPEP->GetBoundInterface();
-    NL_TEST_ASSERT(inSuite, id == intId);
+    EXPECT_EQ(id, intId);
 
     err = testUDPEP->Listen(nullptr /*OnMessageReceived*/, nullptr /*OnReceiveError*/);
     err = testUDPEP->Listen(nullptr /*OnMessageReceived*/, nullptr /*OnReceiveError*/);
     err = testUDPEP->Bind(IPAddressType::kIPv6, addr, 3000, intId);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     err = testUDPEP->BindInterface(IPAddressType::kIPv6, intId);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     testUDPEP->Free();
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 0));
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumUDPEps, 1));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 0));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumUDPEps, 1));
 
     err = gUDP.NewEndPoint(&testUDPEP);
-    NL_TEST_EXIT_ON_FAILED_ASSERT(inSuite, err == CHIP_NO_ERROR);
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 1));
+    ASSERT_EQ(err, CHIP_NO_ERROR);
+    EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 1));
 #if INET_CONFIG_ENABLE_IPV4
     err = testUDPEP->Bind(IPAddressType::kIPv4, addr_v4, 3000, intId);
-    NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR);
+    EXPECT_NE(err, CHIP_NO_ERROR);
     buf = PacketBufferHandle::New(PacketBuffer::kMaxSize);
     err = testUDPEP->SendTo(addr_v4, 3000, std::move(buf));
 #endif // INET_CONFIG_ENABLE_IPV4
     testUDPEP->Free();
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 0));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, 0));
 
     // TcpEndPoint special cases to cover the error branch
     err = testTCPEP1->GetPeerInfo(nullptr, nullptr);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     buf = PacketBufferHandle::New(PacketBuffer::kMaxSize);
     err = testTCPEP1->Send(std::move(buf), false);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     err = testTCPEP1->EnableKeepAlive(10, 100);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     err = testTCPEP1->DisableKeepAlive();
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     err = testTCPEP1->AckReceive(10);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
-    NL_TEST_ASSERT(inSuite, !testTCPEP1->PendingReceiveLength());
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_FALSE(testTCPEP1->PendingReceiveLength());
     err = testTCPEP1->Listen(4);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     err = testTCPEP1->GetLocalInfo(nullptr, nullptr);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
 
     err = testTCPEP1->Bind(IPAddressType::kUnknown, addr_any, 3000, true);
-    NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+    EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
 #if INET_CONFIG_ENABLE_IPV4
     err = testTCPEP1->Bind(IPAddressType::kIPv4, addr, 3000, true);
-    NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+    EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
 #endif // INET_CONFIG_ENABLE_IPV4
     err = testTCPEP1->Bind(IPAddressType::kUnknown, addr, 3000, true);
-    NL_TEST_ASSERT(inSuite, err == INET_ERROR_WRONG_ADDRESS_TYPE);
+    EXPECT_EQ(err, INET_ERROR_WRONG_ADDRESS_TYPE);
 
     err = testTCPEP1->Bind(IPAddressType::kIPv6, addr_any, 3000, true);
     err = testTCPEP1->Bind(IPAddressType::kIPv6, addr_any, 3000, true);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
     err = testTCPEP1->Listen(4);
 #if INET_CONFIG_ENABLE_IPV4
     err = testTCPEP1->Connect(addr_v4, 4000, intId);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INCORRECT_STATE);
+    EXPECT_EQ(err, CHIP_ERROR_INCORRECT_STATE);
 #endif // INET_CONFIG_ENABLE_IPV4
 
     testTCPEP1->Free();
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumTCPEps, 0));
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumTCPEps, 1));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumTCPEps, 0));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumTCPEps, 1));
 }
 
 #if !CHIP_SYSTEM_CONFIG_POOL_USE_HEAP
 // Test the Inet resource limitations.
-static void TestInetEndPointLimit(nlTestSuite * inSuite, void * inContext)
+TEST_F(TestInetEndPoint, TestInetEndPointLimit)
 {
     UDPEndPoint * testUDPEP[INET_CONFIG_NUM_UDP_ENDPOINTS + 1] = { nullptr };
     TCPEndPoint * testTCPEP[INET_CONFIG_NUM_TCP_ENDPOINTS + 1] = { nullptr };
@@ -371,43 +377,43 @@
     for (int i = INET_CONFIG_NUM_UDP_ENDPOINTS; i >= 0; --i)
     {
         err = gUDP.NewEndPoint(&testUDPEP[i]);
-        NL_TEST_ASSERT(inSuite, err == (i ? CHIP_NO_ERROR : CHIP_ERROR_ENDPOINT_POOL_FULL));
+        EXPECT_EQ(err, (i ? CHIP_NO_ERROR : CHIP_ERROR_ENDPOINT_POOL_FULL));
         if (err == CHIP_NO_ERROR)
         {
             ++udpCount;
-            NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, udpCount));
+            EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, udpCount));
         }
     }
     const int udpHighWaterMark = udpCount;
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumUDPEps, udpHighWaterMark));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumUDPEps, udpHighWaterMark));
 
     int tcpCount = 0;
     SYSTEM_STATS_RESET(System::Stats::kInetLayer_NumTCPEps);
     for (int i = INET_CONFIG_NUM_TCP_ENDPOINTS; i >= 0; --i)
     {
         err = gTCP.NewEndPoint(&testTCPEP[i]);
-        NL_TEST_ASSERT(inSuite, err == (i ? CHIP_NO_ERROR : CHIP_ERROR_ENDPOINT_POOL_FULL));
+        EXPECT_EQ(err, (i ? CHIP_NO_ERROR : CHIP_ERROR_ENDPOINT_POOL_FULL));
         if (err == CHIP_NO_ERROR)
         {
             ++tcpCount;
-            NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumTCPEps, tcpCount));
+            EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumTCPEps, tcpCount));
         }
     }
     const int tcpHighWaterMark = tcpCount;
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumTCPEps, tcpHighWaterMark));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumTCPEps, tcpHighWaterMark));
 
 #if CHIP_SYSTEM_CONFIG_NUM_TIMERS
     // Verify same aComplete and aAppState args do not exhaust timer pool
     for (int i = 0; i < CHIP_SYSTEM_CONFIG_NUM_TIMERS + 1; i++)
     {
         err = gSystemLayer.StartTimer(10_ms32, HandleTimer, nullptr);
-        NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
+        EXPECT_EQ(err, CHIP_NO_ERROR);
     }
 
     char numTimersTest[CHIP_SYSTEM_CONFIG_NUM_TIMERS + 1];
     for (int i = 0; i < CHIP_SYSTEM_CONFIG_NUM_TIMERS + 1; i++)
         err = gSystemLayer.StartTimer(10_ms32, HandleTimer, &numTimersTest[i]);
-    NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_NO_MEMORY);
+    EXPECT_EQ(err, CHIP_ERROR_NO_MEMORY);
 #endif // CHIP_SYSTEM_CONFIG_NUM_TIMERS
 
     // Release UDP endpoints
@@ -417,10 +423,10 @@
         {
             testUDPEP[i]->Free();
             --udpCount;
-            NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, udpCount));
+            EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumUDPEps, udpCount));
         }
     }
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumUDPEps, udpHighWaterMark));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumUDPEps, udpHighWaterMark));
 
     // Release TCP endpoints
     for (int i = 0; i <= INET_CONFIG_NUM_TCP_ENDPOINTS; i++)
@@ -429,84 +435,12 @@
         {
             testTCPEP[i]->Free();
             --tcpCount;
-            NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumTCPEps, tcpCount));
+            EXPECT_TRUE(SYSTEM_STATS_TEST_IN_USE(System::Stats::kInetLayer_NumTCPEps, tcpCount));
         }
     }
-    NL_TEST_ASSERT(inSuite, SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumTCPEps, tcpHighWaterMark));
+    EXPECT_TRUE(SYSTEM_STATS_TEST_HIGH_WATER_MARK(System::Stats::kInetLayer_NumTCPEps, tcpHighWaterMark));
 
     ShutdownNetwork();
     ShutdownSystemLayer();
 }
-#endif
-
-// Test Suite
-
-/**
- *   Test Suite. It lists all the test functions.
- */
-static const nlTest sTests[] = { NL_TEST_DEF("InetEndPoint::PreTest", TestInetPre),
-                                 NL_TEST_DEF("InetEndPoint::TestInetError", TestInetError),
-                                 NL_TEST_DEF("InetEndPoint::TestInetInterface", TestInetInterface),
-                                 NL_TEST_DEF("InetEndPoint::TestInetEndPoint", TestInetEndPointInternal),
-#if !CHIP_SYSTEM_CONFIG_POOL_USE_HEAP
-                                 NL_TEST_DEF("InetEndPoint::TestEndPointLimit", TestInetEndPointLimit),
-#endif
-                                 NL_TEST_SENTINEL() };
-
-#if CHIP_SYSTEM_CONFIG_USE_SOCKETS
-/**
- *  Set up the test suite.
- */
-static int TestSetup(void * inContext)
-{
-    CHIP_ERROR error = chip::Platform::MemoryInit();
-    if (error != CHIP_NO_ERROR)
-        return FAILURE;
-    return SUCCESS;
-}
-
-/**
- *  Tear down the test suite.
- */
-static int TestTeardown(void * inContext)
-{
-    ShutdownNetwork();
-    ShutdownSystemLayer();
-    chip::Platform::MemoryShutdown();
-    return SUCCESS;
-}
-#endif // CHIP_SYSTEM_CONFIG_USE_SOCKETS
-
-int TestInetEndPointInternal()
-{
-#if CHIP_SYSTEM_CONFIG_USE_SOCKETS
-    // clang-format off
-    nlTestSuite theSuite =
-    {
-        "inet-endpoint",
-        &sTests[0],
-        TestSetup,
-        TestTeardown
-    };
-    // clang-format on
-
-    // Run test suite against one context.
-    nlTestRunner(&theSuite, nullptr);
-
-    return nlTestRunnerStats(&theSuite);
-#else  // !CHIP_SYSTEM_CONFIG_USE_SOCKETS
-    return (0);
-#endif // !CHIP_SYSTEM_CONFIG_USE_SOCKETS
-}
-
-CHIP_REGISTER_TEST_SUITE(TestInetEndPointInternal)
-
-int TestInetEndPoint()
-{
-    SetSIGUSR1Handler();
-
-    // Generate machine-readable, comma-separated value (CSV) output.
-    nlTestSetOutputStyle(OUTPUT_CSV);
-
-    return (TestInetEndPointInternal());
-}
+#endif // !CHIP_SYSTEM_CONFIG_POOL_USE_HEAP
diff --git a/src/inet/tests/TestInetErrorStr.cpp b/src/inet/tests/TestInetErrorStr.cpp
index 5689267..8e92a04 100644
--- a/src/inet/tests/TestInetErrorStr.cpp
+++ b/src/inet/tests/TestInetErrorStr.cpp
@@ -28,12 +28,11 @@
 #include <stdint.h>
 #include <string.h>
 
+#include <gtest/gtest.h>
+
 #include <inet/InetError.h>
 #include <lib/core/ErrorStr.h>
 #include <lib/support/CodeUtils.h>
-#include <lib/support/UnitTestRegistration.h>
-
-#include <nlunit-test.h>
 
 using namespace chip;
 
@@ -61,7 +60,7 @@
 };
 // clang-format on
 
-static void CheckInetErrorStr(nlTestSuite * inSuite, void * inContext)
+TEST(TestInetErrorStr, CheckInetErrorStr)
 {
     // Register the layer error formatter
     Inet::RegisterLayerErrorFormatter();
@@ -74,45 +73,12 @@
 
         // Assert that the error string contains the error number in hex.
         snprintf(expectedText, sizeof(expectedText), "%08" PRIX32, err.AsInteger());
-        NL_TEST_ASSERT(inSuite, (strstr(errStr, expectedText) != nullptr));
+        EXPECT_NE(strstr(errStr, expectedText), nullptr);
 
 #if !CHIP_CONFIG_SHORT_ERROR_STR
         // Assert that the error string contains a description, which is signaled
         // by a presence of a colon proceeding the description.
-        NL_TEST_ASSERT(inSuite, (strchr(errStr, ':') != nullptr));
+        EXPECT_NE(strchr(errStr, ':'), nullptr);
 #endif // !CHIP_CONFIG_SHORT_ERROR_STR
     }
 }
-
-/**
- *   Test Suite. It lists all the test functions.
- */
-
-// clang-format off
-static const nlTest sTests[] =
-{
-    NL_TEST_DEF("InetErrorStr", CheckInetErrorStr),
-
-    NL_TEST_SENTINEL()
-};
-// clang-format on
-
-int TestInetErrorStr()
-{
-    // clang-format off
-    nlTestSuite theSuite =
-	{
-        "Inet-Error-Strings",
-        &sTests[0],
-        nullptr,
-        nullptr
-    };
-    // clang-format on
-
-    // Run test suite against one context.
-    nlTestRunner(&theSuite, nullptr);
-
-    return (nlTestRunnerStats(&theSuite));
-}
-
-CHIP_REGISTER_TEST_SUITE(TestInetErrorStr)
diff --git a/src/test_driver/openiotsdk/unit-tests/test_components.txt b/src/test_driver/openiotsdk/unit-tests/test_components.txt
index 5887de7..db6d92b 100644
--- a/src/test_driver/openiotsdk/unit-tests/test_components.txt
+++ b/src/test_driver/openiotsdk/unit-tests/test_components.txt
@@ -18,3 +18,4 @@
 UserDirectedCommissioningTests
 SecureChannelTests
 ICDServerTests
+InetLayerTests
diff --git a/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt b/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt
index 9408e84..e00ff91 100644
--- a/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt
+++ b/src/test_driver/openiotsdk/unit-tests/test_components_nl.txt
@@ -1,6 +1,5 @@
 AppTests
 DataModelTests
-InetLayerTests
 MessagingLayerTests
 SecureChannelTestsNL
 TransportLayerTests