| {{>copyright comment="//"}} |
| |
| #include <lib/fake_ddk/fake_ddk.h> |
| |
| #include <sdk/lib/inspect/testing/cpp/zxtest/inspect.h> |
| #include <zxtest/zxtest.h> |
| |
| #include "{{PROJECT_PATH}}/{{snake_case PROJECT_NAME}}.h" |
| |
| namespace {{snake_case PROJECT_NAME}} { |
| |
| using inspect::InspectTestHelper; |
| |
| class {{pascal_case PROJECT_NAME}}Test : public InspectTestHelper, public zxtest::Test { |
| void SetUp() override {} |
| |
| void TearDown() override {} |
| |
| protected: |
| fake_ddk::Bind ddk_; |
| }; |
| |
| TEST_F({{pascal_case PROJECT_NAME}}Test, LifetimeTest) { |
| auto device = new {{pascal_case PROJECT_NAME}}(fake_ddk::kFakeParent); |
| ASSERT_OK(device->Bind()); |
| ASSERT_OK(ddk_.WaitUntilInitComplete()); |
| device->DdkAsyncRemove(); |
| EXPECT_TRUE(ddk_.Ok()); |
| device->DdkRelease(); |
| } |
| |
| // TODO: `is_bound` is an example inspect property. Replace this test with inspect properties |
| // if any are added to the driver. Remove this test if no new inspect nodes/properties were added. |
| TEST_F({{pascal_case PROJECT_NAME}}Test, InspectTest) { |
| auto device = new {{pascal_case PROJECT_NAME}}(fake_ddk::kFakeParent); |
| // Verify is_bound = false. |
| ASSERT_NO_FATAL_FAILURES(ReadInspect(device->inspect_vmo())); |
| ASSERT_NO_FATAL_FAILURES(CheckProperty<inspect::BoolPropertyValue>( |
| hierarchy().node(), "is_bound", inspect::BoolPropertyValue(false))); |
| |
| ASSERT_OK(device->Bind()); |
| |
| // Verify is_bound = true. |
| ASSERT_NO_FATAL_FAILURES(ReadInspect(device->inspect_vmo())); |
| ASSERT_NO_FATAL_FAILURES(CheckProperty<inspect::BoolPropertyValue>( |
| hierarchy().node(), "is_bound", inspect::BoolPropertyValue(true))); |
| |
| ASSERT_OK(ddk_.WaitUntilInitComplete()); |
| device->DdkAsyncRemove(); |
| EXPECT_TRUE(ddk_.Ok()); |
| device->DdkRelease(); |
| } |
| |
| } // namespace {{snake_case PROJECT_NAME}} |