Interaction model to PW (#33160)

diff --git a/src/protocols/interaction_model/tests/BUILD.gn b/src/protocols/interaction_model/tests/BUILD.gn
index 0abd3a7..875146e 100644
--- a/src/protocols/interaction_model/tests/BUILD.gn
+++ b/src/protocols/interaction_model/tests/BUILD.gn
@@ -14,11 +14,10 @@
 
 import("//build_overrides/build.gni")
 import("//build_overrides/chip.gni")
-import("//build_overrides/nlunit_test.gni")
 
 import("${chip_root}/build/chip/chip_test_suite.gni")
 
-chip_test_suite_using_nltest("tests") {
+chip_test_suite("tests") {
   output_name = "libInteractionModelTests"
 
   test_sources = [ "TestStatusCode.cpp" ]
@@ -26,9 +25,7 @@
   public_deps = [
     "${chip_root}/src/lib/core",
     "${chip_root}/src/lib/support",
-    "${chip_root}/src/lib/support:testing_nlunit",
     "${chip_root}/src/protocols/interaction_model",
-    "${nlunit_test_root}:nlunit-test",
   ]
 
   cflags = [ "-Wconversion" ]
diff --git a/src/protocols/interaction_model/tests/TestStatusCode.cpp b/src/protocols/interaction_model/tests/TestStatusCode.cpp
index 4b89e0f..2be78c4 100644
--- a/src/protocols/interaction_model/tests/TestStatusCode.cpp
+++ b/src/protocols/interaction_model/tests/TestStatusCode.cpp
@@ -18,54 +18,51 @@
 
 #include <stdint.h>
 
+#include <gtest/gtest.h>
 #include <lib/core/Optional.h>
-#include <lib/support/UnitTestExtendedAssertions.h>
-#include <lib/support/UnitTestRegistration.h>
 #include <protocols/interaction_model/StatusCode.h>
 
-#include <nlunit-test.h>
-
 using namespace ::chip;
 using namespace ::chip::Protocols::InteractionModel;
 
 namespace {
 
-void TestStatusBasicValues(nlTestSuite * inSuite, void * inContext)
+TEST(TestStatusCode, TestStatusBasicValues)
 {
-    NL_TEST_ASSERT_EQUALS(inSuite, static_cast<int>(Status::Success), 0);
-    NL_TEST_ASSERT_EQUALS(inSuite, static_cast<int>(Status::Failure), 1);
-    NL_TEST_ASSERT_EQUALS(inSuite, static_cast<int>(Status::UnsupportedEndpoint), 0x7f);
-    NL_TEST_ASSERT_EQUALS(inSuite, static_cast<int>(Status::InvalidInState), 0xcb);
+    EXPECT_EQ(static_cast<int>(Status::Success), 0);
+    EXPECT_EQ(static_cast<int>(Status::Failure), 1);
+    EXPECT_EQ(static_cast<int>(Status::UnsupportedEndpoint), 0x7f);
+    EXPECT_EQ(static_cast<int>(Status::InvalidInState), 0xcb);
 }
 
-void TestClusterStatusCode(nlTestSuite * inSuite, void * inContext)
+TEST(TestStatusCode, TestClusterStatusCode)
 {
     // Basic usage as a Status.
     {
         ClusterStatusCode status_code_success{ Status::Success };
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_success, Status::Success);
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_success.GetStatus(), Status::Success);
-        NL_TEST_ASSERT(inSuite, !status_code_success.HasClusterSpecificCode());
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_success.GetClusterSpecificCode(), chip::NullOptional);
-        NL_TEST_ASSERT(inSuite, status_code_success.IsSuccess());
+        EXPECT_EQ(status_code_success, Status::Success);
+        EXPECT_EQ(status_code_success.GetStatus(), Status::Success);
+        EXPECT_FALSE(status_code_success.HasClusterSpecificCode());
+        EXPECT_EQ(status_code_success.GetClusterSpecificCode(), chip::NullOptional);
+        EXPECT_TRUE(status_code_success.IsSuccess());
 
         ClusterStatusCode status_code_failure{ Status::Failure };
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure, Status::Failure);
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure.GetStatus(), Status::Failure);
-        NL_TEST_ASSERT(inSuite, !status_code_failure.HasClusterSpecificCode());
-        NL_TEST_ASSERT(inSuite, !status_code_failure.IsSuccess());
+        EXPECT_EQ(status_code_failure, Status::Failure);
+        EXPECT_EQ(status_code_failure.GetStatus(), Status::Failure);
+        EXPECT_FALSE(status_code_failure.HasClusterSpecificCode());
+        EXPECT_FALSE(status_code_failure.IsSuccess());
 
         ClusterStatusCode status_code_unsupported_ep{ Status::UnsupportedEndpoint };
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_unsupported_ep, Status::UnsupportedEndpoint);
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_unsupported_ep.GetStatus(), Status::UnsupportedEndpoint);
-        NL_TEST_ASSERT(inSuite, !status_code_unsupported_ep.HasClusterSpecificCode());
-        NL_TEST_ASSERT(inSuite, !status_code_unsupported_ep.IsSuccess());
+        EXPECT_EQ(status_code_unsupported_ep, Status::UnsupportedEndpoint);
+        EXPECT_EQ(status_code_unsupported_ep.GetStatus(), Status::UnsupportedEndpoint);
+        EXPECT_FALSE(status_code_unsupported_ep.HasClusterSpecificCode());
+        EXPECT_FALSE(status_code_unsupported_ep.IsSuccess());
 
         ClusterStatusCode status_code_invalid_in_state{ Status::InvalidInState };
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_invalid_in_state, Status::InvalidInState);
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_invalid_in_state.GetStatus(), Status::InvalidInState);
-        NL_TEST_ASSERT(inSuite, !status_code_invalid_in_state.HasClusterSpecificCode());
-        NL_TEST_ASSERT(inSuite, !status_code_invalid_in_state.IsSuccess());
+        EXPECT_EQ(status_code_invalid_in_state, Status::InvalidInState);
+        EXPECT_EQ(status_code_invalid_in_state.GetStatus(), Status::InvalidInState);
+        EXPECT_FALSE(status_code_invalid_in_state.HasClusterSpecificCode());
+        EXPECT_FALSE(status_code_invalid_in_state.IsSuccess());
     }
 
     enum RobotoClusterStatus : uint8_t
@@ -77,18 +74,16 @@
     // Cluster-specific usage.
     {
         ClusterStatusCode status_code_success = ClusterStatusCode::ClusterSpecificSuccess(RobotoClusterStatus::kSauceSuccess);
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_success, Status::Success);
-        NL_TEST_ASSERT(inSuite, status_code_success.HasClusterSpecificCode());
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_success.GetClusterSpecificCode(),
-                              static_cast<uint8_t>(RobotoClusterStatus::kSauceSuccess));
-        NL_TEST_ASSERT(inSuite, status_code_success.IsSuccess());
+        EXPECT_EQ(status_code_success, Status::Success);
+        EXPECT_TRUE(status_code_success.HasClusterSpecificCode());
+        EXPECT_EQ(status_code_success.GetClusterSpecificCode(), static_cast<uint8_t>(RobotoClusterStatus::kSauceSuccess));
+        EXPECT_TRUE(status_code_success.IsSuccess());
 
         ClusterStatusCode status_code_failure = ClusterStatusCode::ClusterSpecificFailure(RobotoClusterStatus::kSandwichError);
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure, Status::Failure);
-        NL_TEST_ASSERT(inSuite, status_code_failure.HasClusterSpecificCode());
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure.GetClusterSpecificCode(),
-                              static_cast<uint8_t>(RobotoClusterStatus::kSandwichError));
-        NL_TEST_ASSERT(inSuite, !status_code_failure.IsSuccess());
+        EXPECT_EQ(status_code_failure, Status::Failure);
+        EXPECT_TRUE(status_code_failure.HasClusterSpecificCode());
+        EXPECT_EQ(status_code_failure.GetClusterSpecificCode(), static_cast<uint8_t>(RobotoClusterStatus::kSandwichError));
+        EXPECT_FALSE(status_code_failure.IsSuccess());
     }
 
     // Copy/Assignment
@@ -96,40 +91,19 @@
         ClusterStatusCode status_code_failure1 = ClusterStatusCode::ClusterSpecificFailure(RobotoClusterStatus::kSandwichError);
         ClusterStatusCode status_code_failure2(status_code_failure1);
 
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure1, status_code_failure2);
-        NL_TEST_ASSERT(inSuite, status_code_failure1.HasClusterSpecificCode());
-        NL_TEST_ASSERT(inSuite, status_code_failure2.HasClusterSpecificCode());
+        EXPECT_EQ(status_code_failure1, status_code_failure2);
+        EXPECT_TRUE(status_code_failure1.HasClusterSpecificCode());
+        EXPECT_TRUE(status_code_failure2.HasClusterSpecificCode());
 
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure1.GetClusterSpecificCode(),
-                              static_cast<uint8_t>(RobotoClusterStatus::kSandwichError));
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure2.GetClusterSpecificCode(),
-                              static_cast<uint8_t>(RobotoClusterStatus::kSandwichError));
+        EXPECT_EQ(status_code_failure1.GetClusterSpecificCode(), static_cast<uint8_t>(RobotoClusterStatus::kSandwichError));
+        EXPECT_EQ(status_code_failure2.GetClusterSpecificCode(), static_cast<uint8_t>(RobotoClusterStatus::kSandwichError));
 
         ClusterStatusCode status_code_failure3{ Status::InvalidCommand };
-        NL_TEST_ASSERT(inSuite, status_code_failure2 != status_code_failure3);
+        EXPECT_NE(status_code_failure2, status_code_failure3);
 
         status_code_failure3 = status_code_failure2;
-        NL_TEST_ASSERT_EQUALS(inSuite, status_code_failure2, status_code_failure3);
+        EXPECT_EQ(status_code_failure2, status_code_failure3);
     }
 }
 
-// clang-format off
-const nlTest sTests[] =
-{
-    NL_TEST_DEF("TestStatusBasicValues", TestStatusBasicValues),
-    NL_TEST_DEF("TestClusterStatusCode", TestClusterStatusCode),
-    NL_TEST_SENTINEL()
-};
-// clang-format on
-
-nlTestSuite sSuite = { "Test IM Status Code abstractions", &sTests[0], nullptr, nullptr };
 } // namespace
-
-int TestClusterStatusCode()
-{
-    nlTestRunner(&sSuite, nullptr);
-
-    return (nlTestRunnerStats(&sSuite));
-}
-
-CHIP_REGISTER_TEST_SUITE(TestClusterStatusCode)