diff options
author | Brett W <brett@buhz.com> | 2017-08-01 16:03:47 -0400 |
---|---|---|
committer | Brett W <brett@buhz.com> | 2017-08-01 16:03:47 -0400 |
commit | fd1d68630b17ff9c57e6f8f8cdb3d88b2d909dbb (patch) | |
tree | b5f1f99abd79712a69aeb28b3580e7b5b6a97fe3 | |
parent | 187a8e2ef4b2aa8ca9af914cfce722886766587f (diff) | |
download | sdl_ios-fd1d68630b17ff9c57e6f8f8cdb3d88b2d909dbb.tar.gz |
adding struct
-rw-r--r-- | SmartDeviceLink-iOS.xcodeproj/project.pbxproj | 12 | ||||
-rw-r--r-- | SmartDeviceLink/SDLMetadataStruct.h | 67 | ||||
-rw-r--r-- | SmartDeviceLink/SDLMetadataStruct.m | 89 | ||||
-rw-r--r-- | SmartDeviceLink/SDLNames.h | 4 | ||||
-rw-r--r-- | SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataStructSpec.m | 60 |
5 files changed, 232 insertions, 0 deletions
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj index 5d18acf3c..6920a34f6 100644 --- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj +++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj @@ -906,6 +906,9 @@ 8B06061F1F30BCED005ADB2F /* SDLTextFieldType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B06061D1F30BCED005ADB2F /* SDLTextFieldType.h */; }; 8B0606201F30BCED005ADB2F /* SDLTextFieldType.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B06061E1F30BCED005ADB2F /* SDLTextFieldType.m */; }; 8B0606221F30C108005ADB2F /* SDLTextFieldTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B0606211F30C108005ADB2F /* SDLTextFieldTypeSpec.m */; }; + 8B0606291F3103CE005ADB2F /* SDLMetadataStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0606271F3103CE005ADB2F /* SDLMetadataStruct.h */; }; + 8B06062A1F3103CE005ADB2F /* SDLMetadataStruct.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B0606281F3103CE005ADB2F /* SDLMetadataStruct.m */; }; + 8B06062C1F310ED2005ADB2F /* SDLMetadataStructSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B06062B1F310ED2005ADB2F /* SDLMetadataStructSpec.m */; }; 97E26DEC1E807AD70074A3C7 /* SDLMutableDataQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */; }; 97E26DED1E807AD70074A3C7 /* SDLMutableDataQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */; }; DA4353DF1D271FD10099B8C4 /* CGPointUtilSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */; }; @@ -1969,6 +1972,9 @@ 8B06061D1F30BCED005ADB2F /* SDLTextFieldType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTextFieldType.h; sourceTree = "<group>"; }; 8B06061E1F30BCED005ADB2F /* SDLTextFieldType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextFieldType.m; sourceTree = "<group>"; }; 8B0606211F30C108005ADB2F /* SDLTextFieldTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextFieldTypeSpec.m; sourceTree = "<group>"; }; + 8B0606271F3103CE005ADB2F /* SDLMetadataStruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMetadataStruct.h; sourceTree = "<group>"; }; + 8B0606281F3103CE005ADB2F /* SDLMetadataStruct.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMetadataStruct.m; sourceTree = "<group>"; }; + 8B06062B1F310ED2005ADB2F /* SDLMetadataStructSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMetadataStructSpec.m; sourceTree = "<group>"; }; 97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMutableDataQueue.h; sourceTree = "<group>"; }; 97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMutableDataQueue.m; sourceTree = "<group>"; }; DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CGPointUtilSpec.m; path = UtilitiesSpecs/Touches/CGPointUtilSpec.m; sourceTree = "<group>"; }; @@ -2384,6 +2390,7 @@ 162E82B41A9BDE8A00906325 /* SDLVehicleDataResultSpec.m */, 162E82B51A9BDE8A00906325 /* SDLVehicleTypeSpec.m */, 162E82B61A9BDE8A00906325 /* SDLVrHelpItemSpec.m */, + 8B06062B1F310ED2005ADB2F /* SDLMetadataStructSpec.m */, ); path = StructSpecs; sourceTree = "<group>"; @@ -2988,6 +2995,8 @@ 5D61FC1F1A84238C00846EE7 /* SDLVehicleType.m */, 5D61FC221A84238C00846EE7 /* SDLVrHelpItem.h */, 5D61FC231A84238C00846EE7 /* SDLVrHelpItem.m */, + 8B0606271F3103CE005ADB2F /* SDLMetadataStruct.h */, + 8B0606281F3103CE005ADB2F /* SDLMetadataStruct.m */, ); name = Structs; sourceTree = "<group>"; @@ -4096,6 +4105,7 @@ 5D00AC6F1F1511B9004000D9 /* SDLGetSystemCapability.h in Headers */, 5D61FD891A84238C00846EE7 /* SDLSetGlobalPropertiesResponse.h in Headers */, 5D61FD8D1A84238C00846EE7 /* SDLSetMediaClockTimerResponse.h in Headers */, + 8B0606291F3103CE005ADB2F /* SDLMetadataStruct.h in Headers */, 5D61FD3B1A84238C00846EE7 /* SDLPresetBankCapabilities.h in Headers */, 5D8204311BD001C700D0A41B /* SDLArtwork.h in Headers */, 5D53C46D1B7A99B9003526EA /* SDLStreamingMediaManager.h in Headers */, @@ -4735,6 +4745,7 @@ 5D1665C51CF8CA2700CC4CA1 /* SDLListFilesOperation.m in Sources */, 5D61FE021A84238C00846EE7 /* SDLVehicleDataNotificationStatus.m in Sources */, 5D61FDD81A84238C00846EE7 /* SDLTouchType.m in Sources */, + 8B06062A1F3103CE005ADB2F /* SDLMetadataStruct.m in Sources */, 5D61FDD61A84238C00846EE7 /* SDLTouchEventCapabilities.m in Sources */, 5DA102A51D4122C700C15826 /* NSMutableDictionary+SafeRemove.m in Sources */, 5D61FCF11A84238C00846EE7 /* SDLLockScreenStatusManager.m in Sources */, @@ -4838,6 +4849,7 @@ 162E83331A9BDE8B00906325 /* SDLPerformInteractionSpec.m in Sources */, 5D0A9F951F15585B00CC80DD /* SDLPhoneCapabilitySpec.m in Sources */, 1680B11A1A9CD7AD00DBD79E /* SDLAbstractProtocolSpec.m in Sources */, + 8B06062C1F310ED2005ADB2F /* SDLMetadataStructSpec.m in Sources */, 1680B1151A9CD7AD00DBD79E /* SDLV2ProtocolHeaderSpec.m in Sources */, 162E83101A9BDE8B00906325 /* SDLOnAudioPassThruSpec.m in Sources */, 162E82D91A9BDE8A00906325 /* SDLDisplayTypeSpec.m in Sources */, diff --git a/SmartDeviceLink/SDLMetadataStruct.h b/SmartDeviceLink/SDLMetadataStruct.h new file mode 100644 index 000000000..f7028272b --- /dev/null +++ b/SmartDeviceLink/SDLMetadataStruct.h @@ -0,0 +1,67 @@ +// +// SDLMetadataStruct.h +// SmartDeviceLink-iOS +// +// Created by Brett McIsaac on 8/1/17. +// Copyright © 2017 smartdevicelink. All rights reserved. +// + +#import "SDLRPCMessage.h" + +@class SDLTextFieldType; + +// TODO: CHANGE FILE NAME +@interface SDLMetadataStruct : SDLRPCStruct { +} + +/** + * @abstract Constructs a newly allocated SDLTextField object + */ +- (instancetype)init; + +/** + * @abstract Constructs a newly allocated SDLTextField object indicated by the dictionary parameter + * + * @param dict The dictionary to use to construct the object + */ +- (instancetype)initWithDictionary:(NSMutableDictionary *)dict; + +- (instancetype)initWithTextFieldTypes:(NSArray<SDLTextFieldType *> *)mainField1 mainField2:(NSArray<SDLTextFieldType *> *)mainField2 mainField3:(NSArray<SDLTextFieldType *> *)mainField3 mainField4:(NSArray<SDLTextFieldType *> *)mainField4; + +/** + * @abstract The type of data contained in the "mainField1" text field, Optional. + * + * minsize= 0 + * + * maxsize= 5 + */ +@property (strong, nonatomic) NSMutableArray<SDLTextFieldType *> *mainField1; + +/** + * @abstract The type of data contained in the "mainField2" text field, Optional. + * + * minsize= 0 + * + * maxsize= 5 + */ +@property (strong, nonatomic) NSMutableArray<SDLTextFieldType *> *mainField2; + +/** + * @abstract The type of data contained in the "mainField3" text field, Optional. + * + * minsize= 0 + * + * maxsize= 5 + */ +@property (strong, nonatomic) NSMutableArray<SDLTextFieldType *> *mainField3; + +/** + * @abstract The type of data contained in the "mainField4" text field, Optional. + * + * minsize= 0 + * + * maxsize= 5 + */ +@property (strong, nonatomic) NSMutableArray<SDLTextFieldType *> *mainField4; + +@end diff --git a/SmartDeviceLink/SDLMetadataStruct.m b/SmartDeviceLink/SDLMetadataStruct.m new file mode 100644 index 000000000..796b62039 --- /dev/null +++ b/SmartDeviceLink/SDLMetadataStruct.m @@ -0,0 +1,89 @@ +// +// SDLMetadataStruct.m +// SmartDeviceLink-iOS +// +// Created by Brett McIsaac on 8/1/17. +// Copyright © 2017 smartdevicelink. All rights reserved. +// + +#import "SDLMetadataStruct.h" +#import "SDLNames.h" +#import "SDLTextFieldType.h" + +@implementation SDLMetadataStruct + +- (instancetype)init { + if (self = [super init]) { + } + return self; +} + +- (instancetype)initWithDictionary:(NSMutableDictionary *)dict { + if (self = [super initWithDictionary:dict]) { + } + return self; +} + +- (instancetype)initWithTextFieldTypes:(NSArray<SDLTextFieldType *> *)mainField1 mainField2:(NSArray<SDLTextFieldType *> *)mainField2 mainField3:(NSArray<SDLTextFieldType *> *)mainField3 mainField4:(NSArray<SDLTextFieldType *> *)mainField4 { + self = [self init]; + if (!self) { + return self; + } + + self.mainField1 = [mainField1 mutableCopy]; + self.mainField2 = [mainField2 mutableCopy]; + self.mainField3 = [mainField3 mutableCopy]; + self.mainField4 = [mainField4 mutableCopy]; + + return self; +} + +- (void)setMainField1:(NSMutableArray<SDLTextFieldType *> *)mainField1 { + if (mainField1 != nil) { + [store setObject:mainField1 forKey:NAMES_mainField1Type]; + } else { + [store removeObjectForKey:NAMES_mainField1Type]; + } +} + +- (NSMutableArray<SDLTextFieldType *> *)mainField1 { + return [store objectForKey:NAMES_mainField1Type]; +} + +- (void)setMainField2:(NSMutableArray<SDLTextFieldType *> *)mainField2 { + if (mainField2 != nil) { + [store setObject:mainField2 forKey:NAMES_mainField2Type]; + } else { + [store removeObjectForKey:NAMES_mainField2Type]; + } +} + +- (NSMutableArray<SDLTextFieldType *> *)mainField2 { + return [store objectForKey:NAMES_mainField2Type]; +} + +- (void)setMainField3:(NSMutableArray<SDLTextFieldType *> *)mainField3 { + if (mainField3 != nil) { + [store setObject:mainField3 forKey:NAMES_mainField3Type]; + } else { + [store removeObjectForKey:NAMES_mainField3Type]; + } +} + +- (NSMutableArray<SDLTextFieldType *> *)mainField3 { + return [store objectForKey:NAMES_mainField3Type]; +} + +- (void)setMainField4:(NSMutableArray<SDLTextFieldType *> *)mainField4 { + if (mainField4 != nil) { + [store setObject:mainField4 forKey:NAMES_mainField4Type]; + } else { + [store removeObjectForKey:NAMES_mainField4Type]; + } +} + +- (NSMutableArray<SDLTextFieldType *> *)mainField4 { + return [store objectForKey:NAMES_mainField4Type]; +} + +@end diff --git a/SmartDeviceLink/SDLNames.h b/SmartDeviceLink/SDLNames.h index 93da8a03a..3a157ff7c 100644 --- a/SmartDeviceLink/SDLNames.h +++ b/SmartDeviceLink/SDLNames.h @@ -193,6 +193,10 @@ #define NAMES_mainField2 @"mainField2" #define NAMES_mainField3 @"mainField3" #define NAMES_mainField4 @"mainField4" +#define NAMES_mainField1Type @"mainField1Type" +#define NAMES_mainField2Type @"mainField2Type" +#define NAMES_mainField3Type @"mainField3Type" +#define NAMES_mainField4Type @"mainField4Type" #define NAMES_majorVersion @"majorVersion" #define NAMES_make @"make" #define NAMES_maneuverComplete @"maneuverComplete" diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataStructSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataStructSpec.m new file mode 100644 index 000000000..f8d0c735d --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataStructSpec.m @@ -0,0 +1,60 @@ +// +// SDLMetadataStructSpec.m +// SmartDeviceLink-iOS +// +// Created by Brett McIsaac on 8/1/17. +// Copyright © 2017 smartdevicelink. All rights reserved. +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLNames.h" +#import "SDLMetadataStruct.h" +#import "SDLTextFieldType.h" + +QuickSpecBegin(SDLMetadataStructSpec) + +describe(@"Initialization tests", ^{ + it(@"Should get correctly when initialized with a dictionary", ^ { + + + NSArray<SDLTextFieldType *> *formatArray = @[[SDLTextFieldType MEDIA_ARTIST], [SDLTextFieldType MEDIA_TITLE]]; + NSMutableDictionary* dict = [@{NAMES_mainField1Type: formatArray, + NAMES_mainField2Type: formatArray, + NAMES_mainField3Type: formatArray, + NAMES_mainField4Type: formatArray} mutableCopy]; + + SDLMetadataStruct* testStruct = [[SDLMetadataStruct alloc] initWithDictionary:dict]; + + expect(testStruct.mainField1).to(equal(formatArray)); + expect(testStruct.mainField2).to(equal(formatArray)); + expect(testStruct.mainField3).to(equal(formatArray)); + expect(testStruct.mainField4).to(equal(formatArray)); + }); + + it(@"Should return nil if not set", ^ { + SDLMetadataStruct* testStruct = [[SDLMetadataStruct alloc] init]; + + expect(testStruct.mainField1).to(beNil()); + expect(testStruct.mainField2).to(beNil()); + expect(testStruct.mainField3).to(beNil()); + expect(testStruct.mainField4).to(beNil()); + }); + + it(@"Should get correctly when initialized with Arrays", ^ { + + NSArray<SDLTextFieldType *> *formatArray = @[[SDLTextFieldType MEDIA_ARTIST], [SDLTextFieldType MEDIA_TITLE]]; + + SDLMetadataStruct* testStruct = [[SDLMetadataStruct alloc] initWithTextFieldTypes:formatArray mainField2:formatArray mainField3:formatArray mainField4:formatArray]; + + expect(testStruct.mainField1).to(equal(formatArray)); + expect(testStruct.mainField2).to(equal(formatArray)); + expect(testStruct.mainField3).to(equal(formatArray)); + expect(testStruct.mainField4).to(equal(formatArray)); + }); +}); + +QuickSpecEnd |