diff options
author | leonid lokhmatov, Luxoft <zaqqqqqqqq@gmail.com> | 2021-02-09 09:55:43 +0200 |
---|---|---|
committer | leonid lokhmatov, Luxoft <zaqqqqqqqq@gmail.com> | 2021-02-09 09:55:43 +0200 |
commit | d734ed1dc3e130b7ec19c089efb9c67531ff5a01 (patch) | |
tree | 57387dbfce7a35d9e66bf35b48f5f877d7cc4375 | |
parent | 392b96181f2cf3a3e161b92f2435ae26e311b296 (diff) | |
download | sdl_ios-d734ed1dc3e130b7ec19c089efb9c67531ff5a01.tar.gz |
SDL0238 'Keyboard Enhancements r2': fix SDLWindowCapability and its test.
-rw-r--r-- | SmartDeviceLink/public/SDLWindowCapability.h | 16 | ||||
-rw-r--r-- | SmartDeviceLink/public/SDLWindowCapability.m | 7 | ||||
-rw-r--r-- | SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m | 193 |
3 files changed, 127 insertions, 89 deletions
diff --git a/SmartDeviceLink/public/SDLWindowCapability.h b/SmartDeviceLink/public/SDLWindowCapability.h index efdbf72c3..6c8af50b3 100644 --- a/SmartDeviceLink/public/SDLWindowCapability.h +++ b/SmartDeviceLink/public/SDLWindowCapability.h @@ -67,6 +67,22 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities; /** + * @param windowID - windowID + * @param textFields - textFields + * @param imageFields - imageFields + * @param imageTypeSupported - imageTypeSupported + * @param templatesAvailable - templatesAvailable + * @param numCustomPresetsAvailable - numCustomPresetsAvailable + * @param buttonCapabilities - buttonCapabilities + * @param softButtonCapabilities - softButtonCapabilities + * @param menuLayoutsAvailable - menuLayoutsAvailable + * @param dynamicUpdateCapabilities - dynamicUpdateCapabilities + * @param keyboardCapabilities - keyboardCapabilities + * @return A SDLWindowCapability object + */ +- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities keyboardCapabilities:(nullable SDLKeyboardCapabilities *)keyboardCapabilities; + +/** The specified ID of the window. Can be set to a predefined window, or omitted for the main window on the main display. Size: min 1 max 100 diff --git a/SmartDeviceLink/public/SDLWindowCapability.m b/SmartDeviceLink/public/SDLWindowCapability.m index 0a5c084da..3e81561d5 100644 --- a/SmartDeviceLink/public/SDLWindowCapability.m +++ b/SmartDeviceLink/public/SDLWindowCapability.m @@ -44,7 +44,11 @@ @implementation SDLWindowCapability - (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities { - self = [super init]; + return [self initWithWindowID:windowID textFields:textFields imageFields:imageFields imageTypeSupported:imageTypeSupported templatesAvailable:templatesAvailable numCustomPresetsAvailable:numCustomPresetsAvailable buttonCapabilities:buttonCapabilities softButtonCapabilities:softButtonCapabilities menuLayoutsAvailable:menuLayoutsAvailable dynamicUpdateCapabilities:dynamicUpdateCapabilities keyboardCapabilities:nil]; +} + +- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities keyboardCapabilities:(nullable SDLKeyboardCapabilities *)keyboardCapabilities { + self = [self init]; if (!self) { return nil; } @@ -58,6 +62,7 @@ self.softButtonCapabilities = softButtonCapabilities; self.menuLayoutsAvailable = menuLayoutsAvailable; self.dynamicUpdateCapabilities = dynamicUpdateCapabilities; + self.keyboardCapabilities = keyboardCapabilities; return self; } diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m index e8c2514b4..ef4a193ad 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m @@ -5,114 +5,131 @@ #import <Quick/Quick.h> #import <Nimble/Nimble.h> -#import "SDLWindowCapability.h" - #import "SDLButtonCapabilities.h" #import "SDLDynamicUpdateCapabilities.h" #import "SDLImageField.h" #import "SDLImageType.h" +#import "SDLKeyboardCapabilities.h" #import "SDLRPCParameterNames.h" #import "SDLSoftButtonCapabilities.h" #import "SDLTextField.h" #import "SDLTextFieldName.h" +#import "SDLWindowCapability.h" QuickSpecBegin(SDLWindowCapabilitySpec) +NSString *testTemplateAvailable = @"myTemplate"; +SDLTextField *testTextField = [[SDLTextField alloc] init]; +NSArray<SDLTextField *> *textFields = @[testTextField]; +NSString *textFieldName = @"t.f.name"; +testTextField.name = textFieldName; +SDLImageField *testImageField = [[SDLImageField alloc] init]; +NSArray<SDLImageField *> *imageFields = @[testImageField]; +NSString *testImageName = @"test Image field"; +testImageField.name = testImageName; +SDLButtonCapabilities *testButtonCapabilities = [[SDLButtonCapabilities alloc] init]; +NSArray<SDLButtonCapabilities *> *buttonCapabilities = @[testButtonCapabilities]; +testButtonCapabilities.name = SDLButtonNameOk; +testButtonCapabilities.shortPressAvailable = @YES; +testButtonCapabilities.longPressAvailable = @YES; +testButtonCapabilities.upDownAvailable = @YES; +SDLSoftButtonCapabilities *testSoftButtonsCapabilities = [[SDLSoftButtonCapabilities alloc] init]; +testSoftButtonsCapabilities.imageSupported = @YES; +SDLImageType testImageType = SDLImageTypeDynamic; +SDLMenuLayout testMenuLayout = SDLMenuLayoutTiles; +SDLDynamicUpdateCapabilities *testDynamicUpdates = [[SDLDynamicUpdateCapabilities alloc] initWithSupportedDynamicImageFieldNames:@[SDLImageFieldNameSubMenuIcon] supportsDynamicSubMenus:@YES]; +SDLKeyboardCapabilities *keyboardCapabilities = [[SDLKeyboardCapabilities alloc] init]; +id windowID = @444; +id numCustomPresetsAvailable = @10; +NSArray<SDLImageType> *imageTypeSupported = @[testImageType]; +NSArray<NSString *> *templatesAvailable = @[testTemplateAvailable]; +NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities = @[testSoftButtonsCapabilities]; +NSArray<SDLMenuLayout> *menuLayoutsAvailable = @[testMenuLayout]; __block SDLWindowCapability *testStruct = nil; -__block SDLTextField* testTextField = nil; -__block SDLImageField *testImageField = nil; -__block SDLButtonCapabilities *testButtonCapabilities = nil; -__block SDLSoftButtonCapabilities *testSoftButtonsCapabilities = nil; -__block SDLImageType testImageType = nil; -__block NSString *testTextName = nil; -__block NSString *testImageName = nil; -__block NSString *testTemplateAvailable = nil; -__block SDLMenuLayout testMenuLayout = SDLMenuLayoutTiles; -__block SDLDynamicUpdateCapabilities *testDynamicUpdates = nil; +describe(@"getter/setter tests", ^{ + afterEach(^{ + testStruct = nil; + }); -describe(@"Getter/Setter Tests", ^ { - beforeEach(^{ - testImageType = SDLImageTypeDynamic; - testTextName = @"test Text field"; - testImageName = @"test Image field"; - - testTextField = [[SDLTextField alloc] init]; - testTextField.name = SDLTextFieldNameTertiaryText; - testImageField = [[SDLImageField alloc] init]; - testImageField.name = testImageName; - - testButtonCapabilities = [[SDLButtonCapabilities alloc] init]; - testButtonCapabilities.name = SDLButtonNameOk; - testButtonCapabilities.shortPressAvailable = @YES; - testButtonCapabilities.longPressAvailable = @YES; - testButtonCapabilities.upDownAvailable = @YES; - - testSoftButtonsCapabilities = [[SDLSoftButtonCapabilities alloc] init]; - testSoftButtonsCapabilities.imageSupported = @YES; + context(@"init and assign", ^{ + beforeEach(^{ + testStruct = [[SDLWindowCapability alloc] init]; + testStruct.windowID = windowID; + testStruct.numCustomPresetsAvailable = numCustomPresetsAvailable; + testStruct.textFields = @[testTextField]; + testStruct.imageFields = @[testImageField]; + testStruct.imageTypeSupported = @[testImageType]; + testStruct.buttonCapabilities = @[testButtonCapabilities]; + testStruct.softButtonCapabilities = @[testSoftButtonsCapabilities]; + testStruct.menuLayoutsAvailable = @[testMenuLayout]; + testStruct.templatesAvailable = @[testTemplateAvailable]; + testStruct.dynamicUpdateCapabilities = testDynamicUpdates; + testStruct.keyboardCapabilities = keyboardCapabilities; + }); - testTemplateAvailable = @"myTemplate"; - testDynamicUpdates = [[SDLDynamicUpdateCapabilities alloc] initWithSupportedDynamicImageFieldNames:@[SDLImageFieldNameSubMenuIcon] supportsDynamicSubMenus:@YES]; + it(@"expect to be set properly", ^{ + expect(testStruct.windowID).to(equal(windowID)); + expect(testStruct.textFields.firstObject.name).to(equal(textFieldName)); + expect(testStruct.imageFields.firstObject.name).to(equal(testImageName)); + expect(testStruct.numCustomPresetsAvailable).to(equal(numCustomPresetsAvailable)); + expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); + expect(testStruct.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES)); + expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES)); + expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); + expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES)); + expect(testStruct.menuLayoutsAvailable).to(equal(@[testMenuLayout])); + expect(testStruct.templatesAvailable).to(equal(@[testTemplateAvailable])); + expect(testStruct.dynamicUpdateCapabilities).to(equal(testDynamicUpdates)); + expect(testStruct.imageTypeSupported).to(equal(@[testImageType])); + expect(testStruct.keyboardCapabilities).to(equal(keyboardCapabilities)); + }); }); - - it(@"Should set and get correctly", ^ { - testStruct = [[SDLWindowCapability alloc] init]; - testStruct.windowID = @444; - testStruct.numCustomPresetsAvailable = @10; - testStruct.textFields = @[testTextField]; - testStruct.imageFields = @[testImageField]; - testStruct.imageTypeSupported = @[testImageType]; - testStruct.buttonCapabilities = @[testButtonCapabilities]; - testStruct.softButtonCapabilities = @[testSoftButtonsCapabilities]; - testStruct.menuLayoutsAvailable = @[testMenuLayout]; - testStruct.templatesAvailable = @[testTemplateAvailable]; - testStruct.dynamicUpdateCapabilities = testDynamicUpdates; - - expect(testStruct.windowID).to(equal(@444)); - expect(testStruct.textFields.firstObject.name).to(equal(SDLTextFieldNameTertiaryText)); - expect(testStruct.imageFields.firstObject.name).to(equal(testImageName)); - expect(testStruct.numCustomPresetsAvailable).to(equal(@10)); - expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); - expect(testStruct.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES)); - expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES)); - expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); - expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES)); - expect(testStruct.menuLayoutsAvailable).to(equal(@[testMenuLayout])); - expect(testStruct.templatesAvailable).to(equal(@[testTemplateAvailable])); - expect(testStruct.dynamicUpdateCapabilities).to(equal(testDynamicUpdates)); - }); -}); -describe(@"initializing with ", ^{ - beforeEach(^{ - testStruct = [[SDLWindowCapability alloc] initWithWindowID:@444 textFields:@[testTextField] imageFields:@[testImageField] imageTypeSupported:@[testImageType] templatesAvailable:@[testTemplateAvailable] numCustomPresetsAvailable:@10 buttonCapabilities:@[testButtonCapabilities] softButtonCapabilities:@[testSoftButtonsCapabilities] menuLayoutsAvailable:@[testMenuLayout] dynamicUpdateCapabilities:testDynamicUpdates]; + context(@"initWithWindowID:textFields:imageFields:imageTypeSupported:templatesAvailable:numCustomPresetsAvailable:buttonCapabilities:softButtonCapabilities:menuLayoutsAvailable:dynamicUpdateCapabilities:", ^{ + beforeEach(^{ + testStruct = [[SDLWindowCapability alloc] initWithWindowID:windowID textFields:textFields imageFields:imageFields imageTypeSupported:imageTypeSupported templatesAvailable:templatesAvailable numCustomPresetsAvailable:numCustomPresetsAvailable buttonCapabilities:buttonCapabilities softButtonCapabilities:softButtonCapabilities menuLayoutsAvailable:menuLayoutsAvailable dynamicUpdateCapabilities:testDynamicUpdates]; + }); + + it(@"expect to be set properly", ^{ + expect(testStruct.windowID).to(equal(windowID)); + expect(testStruct.textFields.firstObject.name).to(equal(textFieldName)); + expect(testStruct.imageFields.firstObject.name).to(equal(testImageName)); + expect(testStruct.numCustomPresetsAvailable).to(equal(numCustomPresetsAvailable)); + expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); + expect(testStruct.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES)); + expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES)); + expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); + expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES)); + expect(testStruct.menuLayoutsAvailable).to(equal(@[testMenuLayout])); + expect(testStruct.templatesAvailable).to(equal(@[testTemplateAvailable])); + expect(testStruct.dynamicUpdateCapabilities).to(equal(testDynamicUpdates)); + expect(testStruct.imageTypeSupported).to(equal(@[testImageType])); + expect(testStruct.keyboardCapabilities).to(beNil()); + }); }); - it(@"Should set and get correctly", ^ { - testStruct = [[SDLWindowCapability alloc] init]; - testStruct.windowID = @444; - testStruct.numCustomPresetsAvailable = @10; - testStruct.textFields = @[testTextField]; - testStruct.imageFields = @[testImageField]; - testStruct.imageTypeSupported = @[testImageType]; - testStruct.buttonCapabilities = @[testButtonCapabilities]; - testStruct.softButtonCapabilities = @[testSoftButtonsCapabilities]; - testStruct.menuLayoutsAvailable = @[testMenuLayout]; - testStruct.templatesAvailable = @[testTemplateAvailable]; - testStruct.dynamicUpdateCapabilities = testDynamicUpdates; + context(@"initWithWindowID:textFields:imageFields:imageTypeSupported:templatesAvailable:numCustomPresetsAvailable:buttonCapabilities:softButtonCapabilities:menuLayoutsAvailable:dynamicUpdateCapabilities:keyboardCapabilities:", ^{ + beforeEach(^{ + testStruct = [[SDLWindowCapability alloc] initWithWindowID:windowID textFields:textFields imageFields:imageFields imageTypeSupported:imageTypeSupported templatesAvailable:templatesAvailable numCustomPresetsAvailable:numCustomPresetsAvailable buttonCapabilities:buttonCapabilities softButtonCapabilities:softButtonCapabilities menuLayoutsAvailable:menuLayoutsAvailable dynamicUpdateCapabilities:testDynamicUpdates keyboardCapabilities:keyboardCapabilities]; + }); - expect(testStruct.windowID).to(equal(@444)); - expect(testStruct.textFields.firstObject.name).to(equal(SDLTextFieldNameTertiaryText)); - expect(testStruct.imageFields.firstObject.name).to(equal(testImageName)); - expect(testStruct.numCustomPresetsAvailable).to(equal(@10)); - expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); - expect(testStruct.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES)); - expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES)); - expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); - expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES)); - expect(testStruct.menuLayoutsAvailable).to(equal(@[testMenuLayout])); - expect(testStruct.templatesAvailable).to(equal(@[testTemplateAvailable])); - expect(testStruct.dynamicUpdateCapabilities).to(equal(testDynamicUpdates)); + it(@"expect to be set properly", ^{ + expect(testStruct.windowID).to(equal(windowID)); + expect(testStruct.textFields.firstObject.name).to(equal(textFieldName)); + expect(testStruct.imageFields.firstObject.name).to(equal(testImageName)); + expect(testStruct.numCustomPresetsAvailable).to(equal(numCustomPresetsAvailable)); + expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); + expect(testStruct.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES)); + expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES)); + expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk)); + expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES)); + expect(testStruct.menuLayoutsAvailable).to(equal(@[testMenuLayout])); + expect(testStruct.templatesAvailable).to(equal(@[testTemplateAvailable])); + expect(testStruct.dynamicUpdateCapabilities).to(equal(testDynamicUpdates)); + expect(testStruct.imageTypeSupported).to(equal(@[testImageType])); + expect(testStruct.keyboardCapabilities).to(equal(keyboardCapabilities)); + }); }); }); |