summaryrefslogtreecommitdiff
path: root/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
diff options
context:
space:
mode:
Diffstat (limited to 'SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m')
-rw-r--r--SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m411
1 files changed, 286 insertions, 125 deletions
diff --git a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
index 4989a95f5..681e074b5 100644
--- a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
+++ b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
@@ -1,43 +1,12 @@
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
-#import "SDLAppServiceCapability.h"
-#import "SDLAppServiceManifest.h"
-#import "SDLAppServiceRecord.h"
-#import "SDLAppServicesCapabilities.h"
-#import "SDLAudioPassThruCapabilities.h"
-#import "SDLButtonCapabilities.h"
-#import "SDLDisplayCapabilities.h"
-#import "SDLDisplayCapability.h"
-#import "SDLGetSystemCapability.h"
-#import "SDLGetSystemCapabilityResponse.h"
+#import <SmartDeviceLink/SmartDeviceLink.h>
+
#import "SDLGlobals.h"
-#import "SDLHMICapabilities.h"
-#import "SDLImageField.h"
-#import "SDLImageResolution.h"
-#import "SDLMediaServiceManifest.h"
-#import "SDLNavigationCapability.h"
#import "SDLNotificationConstants.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLOnSystemCapabilityUpdated.h"
-#import "SDLPhoneCapability.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLPresetBankCapabilities.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLRemoteControlCapabilities.h"
#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLScreenParams.h"
-#import "SDLSetDisplayLayoutResponse.h"
-#import "SDLSoftButtonCapabilities.h"
-#import "SDLSystemCapability.h"
#import "SDLSystemCapabilityObserver.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLTextField.h"
-#import "SDLVersion.h"
-#import "SDLVideoStreamingCapability.h"
-#import "SDLWindowCapability.h"
-#import "SDLWindowTypeCapabilities.h"
#import "TestConnectionManager.h"
#import "TestSystemCapabilityObserver.h"
@@ -51,6 +20,9 @@ typedef NSString * SDLServiceID;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
@property (nullable, strong, nonatomic, readwrite) SDLDisplayCapabilities *displayCapabilities;
+
+@property (nullable, strong, nonatomic) SDLDisplayCapabilities *initialMediaCapabilities;
+@property (nullable, strong, nonatomic) NSString *lastDisplayLayoutRequestTemplate;
#pragma clang diagnostic pop
@property (nullable, strong, nonatomic, readwrite) SDLHMICapabilities *hmiCapabilities;
@property (nullable, copy, nonatomic, readwrite) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
@@ -85,7 +57,7 @@ typedef NSString * SDLServiceID;
QuickSpecBegin(SDLSystemCapabilityManagerSpec)
-describe(@"System capability manager", ^{
+describe(@"a system capability manager", ^{
__block SDLSystemCapabilityManager *testSystemCapabilityManager = nil;
__block TestConnectionManager *testConnectionManager = nil;
@@ -93,6 +65,7 @@ describe(@"System capability manager", ^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
__block SDLDisplayCapabilities *testDisplayCapabilities = nil;
+ __block SDLDisplayCapabilities *testDisplayCapabilities2 = nil;
#pragma clang diagnostic pop
__block NSArray<SDLSoftButtonCapabilities *> *testSoftButtonCapabilities = nil;
__block NSArray<SDLButtonCapabilities *> *testButtonCapabilities = nil;
@@ -126,6 +99,11 @@ describe(@"System capability manager", ^{
testDisplayCapabilities.templatesAvailable = @[@"DEFAULT", @"MEDIA"];
testDisplayCapabilities.numCustomPresetsAvailable = @(8);
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testDisplayCapabilities2 = [[SDLDisplayCapabilities alloc] init];
+#pragma clang diagnostic pop
+
SDLSoftButtonCapabilities *softButtonCapability = [[SDLSoftButtonCapabilities alloc] init];
softButtonCapability.shortPressAvailable = @YES;
softButtonCapability.longPressAvailable = @NO;
@@ -157,6 +135,9 @@ describe(@"System capability manager", ^{
defaultWindowCapability.imageTypeSupported = @[SDLImageTypeStatic];
displayCapability.windowCapabilities = @[defaultWindowCapability];
testDisplayCapabilityList = @[displayCapability];
+
+ testDisplayCapabilities2 = [testDisplayCapabilities copy];
+ testDisplayCapabilities2.templatesAvailable = @[@"DEFAULT", @"MEDIA", @"NON_MEDIA"];
});
afterEach(^{
@@ -167,6 +148,7 @@ describe(@"System capability manager", ^{
}
});
+ // should initialize the system capability manager properties correctly
it(@"should initialize the system capability manager properties correctly", ^{
expect(testSystemCapabilityManager.displays).to(beNil());
expect(testSystemCapabilityManager.hmiCapabilities).to(beNil());
@@ -191,8 +173,11 @@ describe(@"System capability manager", ^{
expect(testSystemCapabilityManager.seatLocationCapability).to(beNil());
expect(testSystemCapabilityManager.driverDistractionCapability).to(beNil());
expect(testSystemCapabilityManager.currentHMILevel).to(equal(SDLHMILevelNone));
+ expect(testSystemCapabilityManager.initialMediaCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.lastDisplayLayoutRequestTemplate).to(beNil());
});
+ // isCapabilitySupported method should work correctly
describe(@"isCapabilitySupported method should work correctly", ^{
__block SDLHMICapabilities *hmiCapabilities = nil;
@@ -200,6 +185,7 @@ describe(@"System capability manager", ^{
hmiCapabilities = [[SDLHMICapabilities alloc] init];
});
+ // when there's a cached phone capability and hmiCapabilities is nil
context(@"when there's a cached phone capability and hmiCapabilities is nil", ^{
beforeEach(^{
testSystemCapabilityManager.phoneCapability = [[SDLPhoneCapability alloc] initWithDialNumber:YES];
@@ -210,7 +196,9 @@ describe(@"System capability manager", ^{
});
});
+ // when there's no cached capability
context(@"when there's no cached capability", ^{
+ // pulling a phone capability when HMICapabilites.phoneCapability is false
describe(@"pulling a phone capability when HMICapabilites.phoneCapability is false", ^{
beforeEach(^{
hmiCapabilities.phoneCall = @NO;
@@ -222,24 +210,28 @@ describe(@"System capability manager", ^{
});
});
+ // pulling a phone capability when HMICapabilites.phoneCapability is true
describe(@"pulling a phone capability when HMICapabilites.phoneCapability is true", ^{
beforeEach(^{
hmiCapabilities.phoneCall = @YES;
testSystemCapabilityManager.hmiCapabilities = hmiCapabilities;
});
- it(@"should return NO", ^{
+ it(@"should return YES", ^{
expect([testSystemCapabilityManager isCapabilitySupported:SDLSystemCapabilityTypePhoneCall]).to(beTrue());
});
});
+ // pulling a phone capability when HMICapabilites.phoneCapability is nil
describe(@"pulling a phone capability when HMICapabilites.phoneCapability is nil", ^{
it(@"should return NO", ^{
expect([testSystemCapabilityManager isCapabilitySupported:SDLSystemCapabilityTypePhoneCall]).to(beFalse());
});
});
+ // pulling an app services capability
describe(@"pulling an app services capability", ^{
+ // on RPC connection version 5.1.0 and HMICapabilities.appServices is false
context(@"on RPC connection version 5.1.0 and HMICapabilities.appServices is false", ^{
beforeEach(^{
[SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"5.1.0"];
@@ -252,6 +244,7 @@ describe(@"System capability manager", ^{
});
});
+ // on RPC connection version 5.2.0 and HMICapabilities.appServices is false
context(@"on RPC connection version 5.2.0 and HMICapabilities.appServices is false", ^{
beforeEach(^{
[SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"5.2.0"];
@@ -265,7 +258,9 @@ describe(@"System capability manager", ^{
});
});
+ // pulling a video streaming capability
describe(@"pulling a video streaming capability", ^{
+ // on RPC connection version 2.0.0 and HMICapabilities is nil
context(@"on RPC connection version 2.0.0 and HMICapabilities is nil", ^{
beforeEach(^{
[SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"2.0.0"];
@@ -276,11 +271,13 @@ describe(@"System capability manager", ^{
});
});
+ // on RPC connection version 3.0.0 and HMICapabilities is nil
context(@"on RPC connection version 3.0.0 and HMICapabilities is nil", ^{
beforeEach(^{
[SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"3.0.0"];
});
+ // when displayCapabilities.graphicSupported is true
context(@"when displayCapabilities.graphicSupported is true", ^{
beforeEach(^{
#pragma clang diagnostic push
@@ -295,6 +292,7 @@ describe(@"System capability manager", ^{
});
});
+ // when displayCapabilities.graphicSupported is false
context(@"when displayCapabilities.graphicSupported is false", ^{
beforeEach(^{
testSystemCapabilityManager.displayCapabilities.graphicSupported = @NO;
@@ -306,11 +304,13 @@ describe(@"System capability manager", ^{
});
});
+ // on RPC connection version 5.1.0
context(@"on RPC connection version 5.1.0", ^{
beforeEach(^{
[SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"5.1.0"];
});
+ // when HMICapabilites.videoStreaming is false
context(@"when HMICapabilites.videoStreaming is false", ^{
beforeEach(^{
hmiCapabilities.videoStreaming = @NO;
@@ -322,6 +322,7 @@ describe(@"System capability manager", ^{
});
});
+ // when HMICapabilites.videoStreaming is true
context(@"when HMICapabilites.videoStreaming is true", ^{
beforeEach(^{
hmiCapabilities.videoStreaming = @YES;
@@ -333,6 +334,7 @@ describe(@"System capability manager", ^{
});
});
+ // when HMICapabilites.videoStreaming is nil
context(@"when HMICapabilites.videoStreaming is nil", ^{
it(@"should return false", ^{
expect([testSystemCapabilityManager isCapabilitySupported:SDLSystemCapabilityTypeVideoStreaming]).to(beFalse());
@@ -343,7 +345,8 @@ describe(@"System capability manager", ^{
});
});
- context(@"When notified of a register app interface response", ^{
+ // When notified of a register app interface response
+ describe(@"when notified of a register app interface response", ^{
__block SDLRegisterAppInterfaceResponse *testRegisterAppInterfaceResponse = nil;
__block SDLHMICapabilities *testHMICapabilities = nil;
__block NSArray<SDLHMIZoneCapabilities> *testHMIZoneCapabilities = nil;
@@ -388,72 +391,121 @@ describe(@"System capability manager", ^{
testRegisterAppInterfaceResponse.pcmStreamCapabilities = testPCMStreamCapability;
});
- describe(@"If the Register App Interface request fails", ^{
+ context(@"if the appType = DEFAULT", ^{
+ // if the Register App Interface request fails
+ context(@"if the Register App Interface request fails", ^{
+ beforeEach(^{
+ testRegisterAppInterfaceResponse.success = @NO;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:testRegisterAppInterfaceResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
+
+ // should not save any of the RAIR capabilities
+ it(@"should not save any of the RAIR capabilities", ^{
+ expect(testSystemCapabilityManager.displays).to(beNil());
+ expect(testSystemCapabilityManager.hmiCapabilities).to(beNil());
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated"
+ expect(testSystemCapabilityManager.displayCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.softButtonCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.buttonCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.presetBankCapabilities).to(beNil());
+ #pragma clang diagnostic pop
+ expect(testSystemCapabilityManager.hmiZoneCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.speechCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.prerecordedSpeechCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.vrCapability).to(beFalse());
+ expect(testSystemCapabilityManager.audioPassThruCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.pcmStreamCapability).to(beNil());
+
+ expect(testSystemCapabilityManager.phoneCapability).to(beNil());
+ expect(testSystemCapabilityManager.navigationCapability).to(beNil());
+ expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
+ expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
+ expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.initialMediaCapabilities).to(beNil());
+ });
+ });
+
+ // if the Register App Interface request succeeds
+ context(@"if the Register App Interface request succeeds", ^{
+ beforeEach(^{
+ testRegisterAppInterfaceResponse.success = @YES;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:testRegisterAppInterfaceResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
+
+ it(@"should should save the RAIR capabilities", ^{
+ expect(testSystemCapabilityManager.displays).to(equal(testDisplayCapabilityList));
+ expect(testSystemCapabilityManager.hmiCapabilities).to(equal(testHMICapabilities));
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated"
+ expect(testSystemCapabilityManager.displayCapabilities).to(equal(testDisplayCapabilities));
+ expect(testSystemCapabilityManager.initialMediaCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.softButtonCapabilities).to(equal(testSoftButtonCapabilities));
+ expect(testSystemCapabilityManager.buttonCapabilities).to(equal(testButtonCapabilities));
+ expect(testSystemCapabilityManager.presetBankCapabilities).to(equal(testPresetBankCapabilities));
+ #pragma clang diagnostic pop
+ expect(testSystemCapabilityManager.hmiZoneCapabilities).to(equal(testHMIZoneCapabilities));
+ expect(testSystemCapabilityManager.speechCapabilities).to(equal(testSpeechCapabilities));
+ expect(testSystemCapabilityManager.prerecordedSpeechCapabilities).to(equal(testPrerecordedSpeechCapabilities));
+ expect(testSystemCapabilityManager.vrCapability).to(beTrue());
+ expect(testSystemCapabilityManager.audioPassThruCapabilities).to(equal(testAudioPassThruCapabilities));
+ expect(testSystemCapabilityManager.pcmStreamCapability).to(equal(testPCMStreamCapability));
+
+ expect(testSystemCapabilityManager.phoneCapability).to(beNil());
+ expect(testSystemCapabilityManager.navigationCapability).to(beNil());
+ expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
+ expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
+ expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ });
+ });
+ });
+
+ // if the app has apptype = MEDIA and the RAIR succeeds
+ context(@"if the app has apptype = MEDIA", ^{
beforeEach(^{
- testRegisterAppInterfaceResponse.success = @NO;
- SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:testRegisterAppInterfaceResponse];
- [[NSNotificationCenter defaultCenter] postNotification:notification];
+ SDLLifecycleConfiguration *lifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:@"TestApp" fullAppId:@"12345"];
+ lifecycleConfig.appType = SDLAppHMITypeMedia;
+ testConnectionManager.configuration = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:nil logging:nil fileManager:nil encryption:nil];
});
- it(@"should not save any of the RAIR capabilities", ^{
- expect(testSystemCapabilityManager.displays).to(beNil());
- expect(testSystemCapabilityManager.hmiCapabilities).to(beNil());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- expect(testSystemCapabilityManager.displayCapabilities).to(beNil());
- expect(testSystemCapabilityManager.softButtonCapabilities).to(beNil());
- expect(testSystemCapabilityManager.buttonCapabilities).to(beNil());
- expect(testSystemCapabilityManager.presetBankCapabilities).to(beNil());
-#pragma clang diagnostic pop
- expect(testSystemCapabilityManager.hmiZoneCapabilities).to(beNil());
- expect(testSystemCapabilityManager.speechCapabilities).to(beNil());
- expect(testSystemCapabilityManager.prerecordedSpeechCapabilities).to(beNil());
- expect(testSystemCapabilityManager.vrCapability).to(beFalse());
- expect(testSystemCapabilityManager.audioPassThruCapabilities).to(beNil());
- expect(testSystemCapabilityManager.pcmStreamCapability).to(beNil());
+ describe(@"when the RAIR succeeds", ^{
+ beforeEach(^{
+ testRegisterAppInterfaceResponse.success = @YES;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:testRegisterAppInterfaceResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
- expect(testSystemCapabilityManager.phoneCapability).to(beNil());
- expect(testSystemCapabilityManager.navigationCapability).to(beNil());
- expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
- expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
- expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ it(@"should store the display capabilities into the initialMediaCapabilities", ^{
+ expect(testSystemCapabilityManager.initialMediaCapabilities).toNot(beNil());
+ });
});
});
- describe(@"If the Register App Interface request succeeds", ^{
+ // if the app has additionalAppTypes include MEDIA and the RAIR succeeds
+ context(@"if the app has additionalAppTypes include MEDIA", ^{
beforeEach(^{
- testRegisterAppInterfaceResponse.success = @YES;
- SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:testRegisterAppInterfaceResponse];
- [[NSNotificationCenter defaultCenter] postNotification:notification];
+ SDLLifecycleConfiguration *lifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:@"TestApp" fullAppId:@"12345"];
+ lifecycleConfig.additionalAppTypes = @[SDLAppHMITypeMedia];
+ testConnectionManager.configuration = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:nil logging:nil fileManager:nil encryption:nil];
});
- it(@"should should save the RAIR capabilities", ^{
- expect(testSystemCapabilityManager.displays).to(equal(testDisplayCapabilityList));
- expect(testSystemCapabilityManager.hmiCapabilities).to(equal(testHMICapabilities));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- expect(testSystemCapabilityManager.displayCapabilities).to(equal(testDisplayCapabilities));
- expect(testSystemCapabilityManager.softButtonCapabilities).to(equal(testSoftButtonCapabilities));
- expect(testSystemCapabilityManager.buttonCapabilities).to(equal(testButtonCapabilities));
- expect(testSystemCapabilityManager.presetBankCapabilities).to(equal(testPresetBankCapabilities));
-#pragma clang diagnostic pop
- expect(testSystemCapabilityManager.hmiZoneCapabilities).to(equal(testHMIZoneCapabilities));
- expect(testSystemCapabilityManager.speechCapabilities).to(equal(testSpeechCapabilities));
- expect(testSystemCapabilityManager.prerecordedSpeechCapabilities).to(equal(testPrerecordedSpeechCapabilities));
- expect(testSystemCapabilityManager.vrCapability).to(beTrue());
- expect(testSystemCapabilityManager.audioPassThruCapabilities).to(equal(testAudioPassThruCapabilities));
- expect(testSystemCapabilityManager.pcmStreamCapability).to(equal(testPCMStreamCapability));
+ describe(@"when the RAIR succeeds", ^{
+ beforeEach(^{
+ testRegisterAppInterfaceResponse.success = @YES;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:testRegisterAppInterfaceResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
- expect(testSystemCapabilityManager.phoneCapability).to(beNil());
- expect(testSystemCapabilityManager.navigationCapability).to(beNil());
- expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
- expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
- expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ it(@"should store the display capabilities into the initialMediaCapabilities", ^{
+ expect(testSystemCapabilityManager.initialMediaCapabilities).toNot(beNil());
+ });
});
});
});
- context(@"When notified of a SetDisplayLayout Response", ^ {
+ describe(@"when notified of a SetDisplayLayout Response with NON_MEDIA in templates", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
__block SDLSetDisplayLayoutResponse *testSetDisplayLayoutResponse = nil;
@@ -464,27 +516,26 @@ describe(@"System capability manager", ^{
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testSetDisplayLayoutResponse = [[SDLSetDisplayLayoutResponse alloc] init];
#pragma clang diagnostic pop
- testSetDisplayLayoutResponse.displayCapabilities = testDisplayCapabilities;
+ testSetDisplayLayoutResponse.displayCapabilities = testDisplayCapabilities2;
testSetDisplayLayoutResponse.buttonCapabilities = testButtonCapabilities;
testSetDisplayLayoutResponse.softButtonCapabilities = testSoftButtonCapabilities;
testSetDisplayLayoutResponse.presetBankCapabilities = testPresetBankCapabilities;
});
- describe(@"If the SetDisplayLayout request fails", ^{
+ describe(@"if the SetDisplayLayout request succeeds", ^{
beforeEach(^{
- testSetDisplayLayoutResponse.success = @NO;
+ testSetDisplayLayoutResponse.success = @YES;
SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse];
[[NSNotificationCenter defaultCenter] postNotification:notification];
});
- it(@"should not save any capabilities", ^{
- expect(testSystemCapabilityManager.displays).to(beNil());
+ it(@"should should save the capabilities", ^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
- expect(testSystemCapabilityManager.displayCapabilities).to(beNil());
- expect(testSystemCapabilityManager.softButtonCapabilities).to(beNil());
- expect(testSystemCapabilityManager.buttonCapabilities).to(beNil());
- expect(testSystemCapabilityManager.presetBankCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.displayCapabilities).to(equal(testDisplayCapabilities2));
+ expect(testSystemCapabilityManager.softButtonCapabilities).to(equal(testSoftButtonCapabilities));
+ expect(testSystemCapabilityManager.buttonCapabilities).to(equal(testButtonCapabilities));
+ expect(testSystemCapabilityManager.presetBankCapabilities).to(equal(testPresetBankCapabilities));
#pragma clang diagnostic pop
expect(testSystemCapabilityManager.hmiCapabilities).to(beNil());
@@ -500,41 +551,145 @@ describe(@"System capability manager", ^{
expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
});
- });
- describe(@"If the SetDisplayLayout request succeeds", ^{
- beforeEach(^{
- testSetDisplayLayoutResponse.success = @YES;
- SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse];
- [[NSNotificationCenter defaultCenter] postNotification:notification];
+ describe(@"if templatesAvailable has NON_MEDIA", ^{
+ it(@"should be changed to include NON-MEDIA and not NON_MEDIA", ^{
+ expect(testSystemCapabilityManager.defaultMainWindowCapability.templatesAvailable).to(equal(@[@"DEFAULT", @"MEDIA", @"NON-MEDIA"]));
+ expect(testSystemCapabilityManager.defaultMainWindowCapability.templatesAvailable).notTo(contain(@"NON_MEDIA"));
+ });
});
+ });
+ });
- it(@"should should save the capabilities", ^{
- expect(testSystemCapabilityManager.displays).to(equal(testDisplayCapabilityList));
+ // when notified of a SetDisplayLayout Response
+ context(@"when notified of a SetDisplayLayout Response", ^ {
#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- expect(testSystemCapabilityManager.displayCapabilities).to(equal(testDisplayCapabilities));
- expect(testSystemCapabilityManager.softButtonCapabilities).to(equal(testSoftButtonCapabilities));
- expect(testSystemCapabilityManager.buttonCapabilities).to(equal(testButtonCapabilities));
- expect(testSystemCapabilityManager.presetBankCapabilities).to(equal(testPresetBankCapabilities));
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ __block SDLSetDisplayLayoutResponse *testSetDisplayLayoutResponse = nil;
#pragma clang diagnostic pop
- expect(testSystemCapabilityManager.hmiCapabilities).to(beNil());
- expect(testSystemCapabilityManager.hmiZoneCapabilities).to(beNil());
- expect(testSystemCapabilityManager.speechCapabilities).to(beNil());
- expect(testSystemCapabilityManager.prerecordedSpeechCapabilities).to(beNil());
- expect(testSystemCapabilityManager.vrCapability).to(beFalse());
- expect(testSystemCapabilityManager.audioPassThruCapabilities).to(beNil());
- expect(testSystemCapabilityManager.pcmStreamCapability).to(beNil());
- expect(testSystemCapabilityManager.phoneCapability).to(beNil());
- expect(testSystemCapabilityManager.navigationCapability).to(beNil());
- expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
- expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
- expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ beforeEach(^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testSetDisplayLayoutResponse = [[SDLSetDisplayLayoutResponse alloc] init];
+#pragma clang diagnostic pop
+ testSetDisplayLayoutResponse.displayCapabilities = testDisplayCapabilities;
+ testSetDisplayLayoutResponse.buttonCapabilities = testButtonCapabilities;
+ testSetDisplayLayoutResponse.softButtonCapabilities = testSoftButtonCapabilities;
+ testSetDisplayLayoutResponse.presetBankCapabilities = testPresetBankCapabilities;
+ });
+
+ context(@"if there are initialMediaCapabilities", ^{
+ beforeEach(^{
+ testSystemCapabilityManager.initialMediaCapabilities = testDisplayCapabilities2;
+ });
+
+ context(@"if switching to a MEDIA template", ^{
+ beforeEach(^{
+ testSystemCapabilityManager.lastDisplayLayoutRequestTemplate = SDLPredefinedLayoutMedia;
+
+ testSetDisplayLayoutResponse.success = @YES;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
+
+ it(@"should use the initialMediaCapabilities, not the SetDisplayLayoutResponse displayCapabilities", ^{
+ expect(testSystemCapabilityManager.displayCapabilities).toNot(equal(testSetDisplayLayoutResponse.displayCapabilities));
+ expect(testSystemCapabilityManager.displayCapabilities).to(equal(testSystemCapabilityManager.initialMediaCapabilities));
+ });
+ });
+
+ context(@"if switching to a NON-MEDIA template", ^{
+ beforeEach(^{
+ testSystemCapabilityManager.lastDisplayLayoutRequestTemplate = SDLPredefinedLayoutNonMedia;
+
+ testSetDisplayLayoutResponse.success = @YES;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
+
+ it(@"should use the SetDisplayLayoutResponse displayCapabilities, not the initialMediaCapabilities", ^{
+ expect(testSystemCapabilityManager.displayCapabilities).to(equal(testSetDisplayLayoutResponse.displayCapabilities));
+ expect(testSystemCapabilityManager.displayCapabilities).toNot(equal(testSystemCapabilityManager.initialMediaCapabilities));
+ });
+ });
+ });
+
+ context(@"if there are no initialMediaCapabilities", ^{
+ beforeEach(^{
+ testSystemCapabilityManager.initialMediaCapabilities = nil;
+ });
+
+ // if the SetDisplayLayout request fails
+ context(@"if the SetDisplayLayout request fails", ^{
+ beforeEach(^{
+ testSetDisplayLayoutResponse.success = @NO;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
+
+ it(@"should not save any capabilities", ^{
+ expect(testSystemCapabilityManager.displays).to(beNil());
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated"
+ expect(testSystemCapabilityManager.displayCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.initialMediaCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.softButtonCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.buttonCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.presetBankCapabilities).to(beNil());
+ #pragma clang diagnostic pop
+
+ expect(testSystemCapabilityManager.hmiCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.hmiZoneCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.speechCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.prerecordedSpeechCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.vrCapability).to(beFalse());
+ expect(testSystemCapabilityManager.audioPassThruCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.pcmStreamCapability).to(beNil());
+ expect(testSystemCapabilityManager.phoneCapability).to(beNil());
+ expect(testSystemCapabilityManager.navigationCapability).to(beNil());
+ expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
+ expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
+ expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ });
+ });
+
+ // if the SetDisplayLayout request succeeds
+ context(@"if the SetDisplayLayout request succeeds", ^{
+ beforeEach(^{
+ testSetDisplayLayoutResponse.success = @YES;
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ });
+
+ it(@"should should save the capabilities", ^{
+ expect(testSystemCapabilityManager.displays).to(equal(testDisplayCapabilityList));
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated"
+ expect(testSystemCapabilityManager.displayCapabilities).to(equal(testDisplayCapabilities));
+ expect(testSystemCapabilityManager.softButtonCapabilities).to(equal(testSoftButtonCapabilities));
+ expect(testSystemCapabilityManager.buttonCapabilities).to(equal(testButtonCapabilities));
+ expect(testSystemCapabilityManager.presetBankCapabilities).to(equal(testPresetBankCapabilities));
+ #pragma clang diagnostic pop
+
+ expect(testSystemCapabilityManager.hmiCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.hmiZoneCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.speechCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.prerecordedSpeechCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.vrCapability).to(beFalse());
+ expect(testSystemCapabilityManager.audioPassThruCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.pcmStreamCapability).to(beNil());
+ expect(testSystemCapabilityManager.phoneCapability).to(beNil());
+ expect(testSystemCapabilityManager.navigationCapability).to(beNil());
+ expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
+ expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
+ expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ });
});
});
- describe(@"if the setdisplaylayout has nil displaycapabilities", ^{
+ // if the SetDisplayLayout has nil DisplayCapabilities
+ context(@"if the SetDisplayLayout has nil DisplayCapabilities", ^{
beforeEach(^{
testSetDisplayLayoutResponse.success = @YES;
testSetDisplayLayoutResponse.displayCapabilities = nil;
@@ -549,8 +704,9 @@ describe(@"System capability manager", ^{
});
});
});
-
- context(@"when updating display capabilities with OnSystemCapabilityUpdated", ^{
+
+ // when updating display capabilities with OnSystemCapabilityUpdated
+ describe(@"when updating display capabilities with OnSystemCapabilityUpdated", ^{
it(@"should properly update display capability including conversion two times", ^{
// two times because capabilities are just saved in first run but merged/updated in subsequent runs
for (int i = 0; i < 2; i++) {
@@ -590,7 +746,8 @@ describe(@"System capability manager", ^{
});
});
- context(@"When sending a updateCapabilityType request in HMI FULL", ^{
+ // when sending a updateCapabilityType request in HMI FULL
+ context(@"when sending a updateCapabilityType request in HMI FULL", ^{
__block SDLGetSystemCapabilityResponse *testGetSystemCapabilityResponse = nil;
__block SDLPhoneCapability *testPhoneCapability = nil;
@@ -664,6 +821,7 @@ describe(@"System capability manager", ^{
});
});
+ // updating the SCM through OnSystemCapability in HMI Full
describe(@"updating the SCM through OnSystemCapability in HMI Full", ^{
__block SDLPhoneCapability *phoneCapability = nil;
@@ -683,6 +841,7 @@ describe(@"System capability manager", ^{
});
});
+ // subscribing to capability types when HMI is full
describe(@"subscribing to capability types when HMI is full", ^{
__block TestSystemCapabilityObserver *phoneObserver = nil;
__block TestSystemCapabilityObserver *navigationObserver = nil;
@@ -824,6 +983,7 @@ describe(@"System capability manager", ^{
});
});
+ // merging app services capability changes
describe(@"merging app services capability changes", ^{
__block SDLAppServicesCapabilities *baseAppServices = nil;
__block SDLAppServiceCapability *deleteCapability = nil;
@@ -885,6 +1045,7 @@ describe(@"System capability manager", ^{
});
});
+ // when the system capability manager is stopped after being started
describe(@"when the system capability manager is stopped after being started", ^{
beforeEach(^{
[testSystemCapabilityManager stop];