From e6860f0a94d62244d97c1e9d980e24ed6e69e8f7 Mon Sep 17 00:00:00 2001 From: Jeff Tung <100387939+jtung-apple@users.noreply.github.com> Date: Tue, 6 Feb 2024 13:22:11 -0800 Subject: [PATCH] Removed need to plumb MTRDeviceControllerDataStore methods through MTRDeviceController --- .../Framework/CHIP/MTRDeviceController.mm | 20 --------- .../CHIPTests/MTRPerControllerStorageTests.m | 45 ++++++++++--------- 2 files changed, 25 insertions(+), 40 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 0397268509ca76..fe6406bd38c5b8 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -1236,26 +1236,6 @@ - (void)downloadLogFromNodeWithID:(NSNumber *)nodeID completion:completion]; } -#pragma - Unit Test accessors for data store -#ifdef DEBUG -- (nullable NSArray *)unitTest_dataStore_getStoredAttributesForNodeID:(NSNumber *)nodeID -{ - return [_controllerDataStore getStoredAttributesForNodeID:nodeID]; -} -- (void)unitTest_dataStore_storeAttributeValues:(NSArray *)dataValues forNodeID:(NSNumber *)nodeID -{ - [_controllerDataStore storeAttributeValues:dataValues forNodeID:nodeID]; -} -- (void)unitTest_dataStore_clearStoredAttributesForNodeID:(NSNumber *)nodeID -{ - [_controllerDataStore clearStoredAttributesForNodeID:nodeID]; -} -- (void)unitTest_dataStore_clearAllStoredAttributes -{ - [_controllerDataStore clearAllStoredAttributes]; -} -#endif - @end /** diff --git a/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m b/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m index c2c282d207df86..5224ac09b7f851 100644 --- a/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m +++ b/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m @@ -33,13 +33,18 @@ static NSString * kOnboardingPayload = @"MT:-24J0AFN00KA0648G00"; static const uint16_t kTestVendorId = 0xFFF1u; -// Declare unit test only methods to access data store directly for testing verification +// MTRDeviceControllerDataStore.h includes C++ header, and so we need to declare the methods separately +@protocol MTRDeviceControllerDataStoreAttributeStoreMethods +- (nullable NSArray *)getStoredAttributesForNodeID:(NSNumber *)nodeID; +- (void)storeAttributeValues:(NSArray *)dataValues forNodeID:(NSNumber *)nodeID; +- (void)clearStoredAttributesForNodeID:(NSNumber *)nodeID; +- (void)clearAllStoredAttributes; +@end + +// Declare internal methods for testing @interface MTRDeviceController (Test) - (void)removeDevice:(MTRDevice *)device; -- (nullable NSArray *)unitTest_dataStore_getStoredAttributesForNodeID:(NSNumber *)nodeID; -- (void)unitTest_dataStore_storeAttributeValues:(NSArray *)dataValues forNodeID:(NSNumber *)nodeID; -- (void)unitTest_dataStore_clearStoredAttributesForNodeID:(NSNumber *)nodeID; -- (void)unitTest_dataStore_clearAllStoredAttributes; +@property (nonatomic, readonly, nullable) id controllerDataStore; @end @interface MTRDevice (Test) @@ -1091,16 +1096,16 @@ - (void)test008_TestDataStoreDirect @{ MTRAttributePathKey : [MTRAttributePath attributePathWithEndpointID:@(2) clusterID:@(1) attributeID:@(2)], MTRDataKey : @ { MTRTypeKey : MTRUnsignedIntegerValueType, MTRValueKey : @(212) } }, @{ MTRAttributePathKey : [MTRAttributePath attributePathWithEndpointID:@(2) clusterID:@(1) attributeID:@(3)], MTRDataKey : @ { MTRTypeKey : MTRUnsignedIntegerValueType, MTRValueKey : @(213) } }, ]; - [controller unitTest_dataStore_storeAttributeValues:testAttributes forNodeID:@(1001)]; - [controller unitTest_dataStore_storeAttributeValues:testAttributes forNodeID:@(1002)]; - [controller unitTest_dataStore_storeAttributeValues:testAttributes forNodeID:@(1003)]; + [controller.controllerDataStore storeAttributeValues:testAttributes forNodeID:@(1001)]; + [controller.controllerDataStore storeAttributeValues:testAttributes forNodeID:@(1002)]; + [controller.controllerDataStore storeAttributeValues:testAttributes forNodeID:@(1003)]; // Check values are written and can be fetched - NSArray * dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1001)]; + NSArray * dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1001)]; XCTAssertEqual(dataStoreValues.count, 9); - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1002)]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1002)]; XCTAssertEqual(dataStoreValues.count, 9); - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1003)]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1003)]; XCTAssertEqual(dataStoreValues.count, 9); // Check values @@ -1136,20 +1141,20 @@ - (void)test008_TestDataStoreDirect } } - [controller unitTest_dataStore_clearStoredAttributesForNodeID:@(1001)]; - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1001)]; + [controller.controllerDataStore clearStoredAttributesForNodeID:@(1001)]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1001)]; XCTAssertEqual(dataStoreValues.count, 0); - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1002)]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1002)]; XCTAssertEqual(dataStoreValues.count, 9); - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1003)]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1003)]; XCTAssertEqual(dataStoreValues.count, 9); - [controller unitTest_dataStore_clearAllStoredAttributes]; - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1001)]; + [controller.controllerDataStore clearAllStoredAttributes]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1001)]; XCTAssertEqual(dataStoreValues.count, 0); - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1002)]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1002)]; XCTAssertEqual(dataStoreValues.count, 0); - dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:@(1003)]; + dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:@(1003)]; XCTAssertEqual(dataStoreValues.count, 0); [controller shutdown]; @@ -1211,7 +1216,7 @@ - (void)test009_TestDataStoreMTRDevice [self waitForExpectations:@[ subscriptionExpectation ] timeout:60]; - NSArray * dataStoreValues = [controller unitTest_dataStore_getStoredAttributesForNodeID:deviceID]; + NSArray * dataStoreValues = [controller.controllerDataStore getStoredAttributesForNodeID:deviceID]; // Verify all values are stored into storage for (NSDictionary * responseValue in dataStoreValues) {