diff options
author | Justin Beharry <justin.beharry@livio.io> | 2022-08-17 16:19:53 -0400 |
---|---|---|
committer | Justin Beharry <justin.beharry@livio.io> | 2022-08-17 16:19:53 -0400 |
commit | 9d43884d816ba21f37e7cccb52a9348945669d9e (patch) | |
tree | 602bd6dca8e3dde656927ab197adfa5be5e8ddb8 | |
parent | aba5ba83d902a1c5e7e68915180eaae319855430 (diff) | |
download | sdl_ios-9d43884d816ba21f37e7cccb52a9348945669d9e.tar.gz |
Fix nil screenParams and mediaClockFormats
-keep mediaClockFormats to initialized value
-set conversion display capabilities to original screenParams
-add unit test in SDLSystemCapabilityManager spec
-rw-r--r-- | SmartDeviceLink/public/SDLSystemCapabilityManager.m | 4 | ||||
-rw-r--r-- | SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m | 51 |
2 files changed, 51 insertions, 4 deletions
diff --git a/SmartDeviceLink/public/SDLSystemCapabilityManager.m b/SmartDeviceLink/public/SDLSystemCapabilityManager.m index 849f8f2e8..f56b23109 100644 --- a/SmartDeviceLink/public/SDLSystemCapabilityManager.m +++ b/SmartDeviceLink/public/SDLSystemCapabilityManager.m @@ -255,8 +255,10 @@ typedef NSString * SDLServiceID; convertedCapabilities.imageFields = [defaultMainWindowCapabilities.imageFields copy]; convertedCapabilities.templatesAvailable = [defaultMainWindowCapabilities.templatesAvailable copy]; convertedCapabilities.numCustomPresetsAvailable = [defaultMainWindowCapabilities.numCustomPresetsAvailable copy]; - convertedCapabilities.mediaClockFormats = @[]; // mandatory field but allows empty array + // Set to an empty list if no formats are available + convertedCapabilities.mediaClockFormats = self.displayCapabilities.mediaClockFormats ? self.displayCapabilities.mediaClockFormats : @[]; convertedCapabilities.graphicSupported = @([defaultMainWindowCapabilities.imageTypeSupported containsObject:SDLImageTypeDynamic]); + convertedCapabilities.screenParams = self.displayCapabilities.screenParams; self.displayCapabilities = convertedCapabilities; self.buttonCapabilities = defaultMainWindowCapabilities.buttonCapabilities; diff --git a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m index 613030611..e8cd13502 100644 --- a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m +++ b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m @@ -66,6 +66,7 @@ describe(@"a system capability manager", ^{ #pragma clang diagnostic ignored "-Wdeprecated-declarations" __block SDLDisplayCapabilities *testDisplayCapabilities = nil; __block SDLDisplayCapabilities *testDisplayCapabilities2 = nil; + __block SDLDisplayCapabilities *testDisplayCapabilities3 = nil; #pragma clang diagnostic pop __block NSArray<SDLSoftButtonCapabilities *> *testSoftButtonCapabilities = nil; __block NSArray<SDLButtonCapabilities *> *testButtonCapabilities = nil; @@ -138,6 +139,16 @@ describe(@"a system capability manager", ^{ testDisplayCapabilities2 = [testDisplayCapabilities copy]; testDisplayCapabilities2.templatesAvailable = @[@"DEFAULT", @"MEDIA", @"NON_MEDIA"]; + + testDisplayCapabilities3 = [testDisplayCapabilities copy]; + testDisplayCapabilities3.mediaClockFormats = @[SDLMediaClockFormatClock1, SDLMediaClockFormatClock2]; + SDLScreenParams *screenParams = [[SDLScreenParams alloc] init]; + [screenParams setResolution:[[SDLImageResolution alloc] initWithWidth:675 height:960]]; + [screenParams setTouchEventAvailable:[[SDLTouchEventCapabilities alloc] init]]; + [screenParams.touchEventAvailable setPressAvailable:@YES]; + [screenParams.touchEventAvailable setMultiTouchAvailable:@YES]; + [screenParams.touchEventAvailable setDoublePressAvailable:@YES]; + testDisplayCapabilities3.screenParams = screenParams; }); afterEach(^{ @@ -713,7 +724,7 @@ describe(@"a system capability manager", ^{ testDisplayCapabilities.displayName = [NSString stringWithFormat:@"Display %i", i]; testDisplayCapabilities.graphicSupported = i == 0 ? @(NO) : @(YES); testDisplayCapabilities.templatesAvailable = @[[NSString stringWithFormat:@"Template %i", i]]; - + SDLWindowTypeCapabilities *windowTypeCapabilities = [[SDLWindowTypeCapabilities alloc] initWithType:SDLWindowTypeMain maximumNumberOfWindows:1]; SDLDisplayCapability *displayCapability = [[SDLDisplayCapability alloc] initWithDisplayName:testDisplayCapabilities.displayName]; displayCapability.windowTypeSupported = @[windowTypeCapabilities]; @@ -728,12 +739,12 @@ describe(@"a system capability manager", ^{ defaultWindowCapability.imageTypeSupported = testDisplayCapabilities.graphicSupported.boolValue ? @[SDLImageTypeStatic, SDLImageTypeDynamic] : @[SDLImageTypeStatic]; displayCapability.windowCapabilities = @[defaultWindowCapability]; NSArray<SDLDisplayCapability *> *newDisplayCapabilityList = testDisplayCapabilityList = @[displayCapability]; - + SDLSystemCapability *newCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:newDisplayCapabilityList]; SDLOnSystemCapabilityUpdated *testUpdateNotification = [[SDLOnSystemCapabilityUpdated alloc] initWithSystemCapability:newCapability]; SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidReceiveSystemCapabilityUpdatedNotification object:nil rpcNotification:testUpdateNotification]; [[NSNotificationCenter defaultCenter] postNotification:notification]; - + expect(testSystemCapabilityManager.displays).to(equal(testDisplayCapabilityList)); #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated" @@ -744,6 +755,40 @@ describe(@"a system capability manager", ^{ #pragma clang diagnostic pop } }); + + it(@"it should keep maintain screenParams and mediaClockFormats values in display capabilities", ^{ + // Set to display capabilities that have screenParams and mediaClockFormats set + testSystemCapabilityManager.displayCapabilities = testDisplayCapabilities3; + + SDLWindowTypeCapabilities *windowTypeCapabilities = [[SDLWindowTypeCapabilities alloc] initWithType:SDLWindowTypeMain maximumNumberOfWindows:1]; + SDLDisplayCapability *displayCapability = [[SDLDisplayCapability alloc] initWithDisplayName:testDisplayCapabilities.displayName]; + displayCapability.windowTypeSupported = @[windowTypeCapabilities]; + SDLWindowCapability *defaultWindowCapability = [[SDLWindowCapability alloc] init]; + defaultWindowCapability.windowID = @(SDLPredefinedWindowsDefaultWindow); + defaultWindowCapability.buttonCapabilities = testButtonCapabilities.copy; + defaultWindowCapability.softButtonCapabilities = testSoftButtonCapabilities.copy; + defaultWindowCapability.templatesAvailable = testDisplayCapabilities.templatesAvailable.copy; + defaultWindowCapability.numCustomPresetsAvailable = testDisplayCapabilities.numCustomPresetsAvailable.copy; + defaultWindowCapability.textFields = testDisplayCapabilities.textFields.copy; + defaultWindowCapability.imageFields = testDisplayCapabilities.imageFields.copy; + defaultWindowCapability.imageTypeSupported = testDisplayCapabilities.graphicSupported.boolValue ? @[SDLImageTypeStatic, SDLImageTypeDynamic] : @[SDLImageTypeStatic]; + displayCapability.windowCapabilities = @[defaultWindowCapability]; + NSArray<SDLDisplayCapability *> *newDisplayCapabilityList = testDisplayCapabilityList = @[displayCapability]; + + SDLSystemCapability *newCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:newDisplayCapabilityList]; + SDLOnSystemCapabilityUpdated *testUpdateNotification = [[SDLOnSystemCapabilityUpdated alloc] initWithSystemCapability:newCapability]; + SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidReceiveSystemCapabilityUpdatedNotification object:nil rpcNotification:testUpdateNotification]; + [[NSNotificationCenter defaultCenter] postNotification:notification]; + +#pragma clang diagnostic push + expect(testSystemCapabilityManager.displays).to(equal(testDisplayCapabilityList)); +#pragma clang diagnostic ignored "-Wdeprecated" + expect(testSystemCapabilityManager.displayCapabilities).to(equal(testDisplayCapabilities3)); + expect(testSystemCapabilityManager.buttonCapabilities).to(equal(testButtonCapabilities)); + expect(testSystemCapabilityManager.softButtonCapabilities).to(equal(testSoftButtonCapabilities)); + expect(testSystemCapabilityManager.presetBankCapabilities).to(beNil()); +#pragma clang diagnostic pop + }); }); // when sending a updateCapabilityType request in HMI FULL |