summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Beharry <justin.beharry@livio.io>2022-08-17 16:19:53 -0400
committerJustin Beharry <justin.beharry@livio.io>2022-08-17 16:19:53 -0400
commit9d43884d816ba21f37e7cccb52a9348945669d9e (patch)
tree602bd6dca8e3dde656927ab197adfa5be5e8ddb8
parentaba5ba83d902a1c5e7e68915180eaae319855430 (diff)
downloadsdl_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.m4
-rw-r--r--SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m51
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