summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett W <brett@buhz.com>2017-08-01 16:03:47 -0400
committerBrett W <brett@buhz.com>2017-08-01 16:03:47 -0400
commitfd1d68630b17ff9c57e6f8f8cdb3d88b2d909dbb (patch)
treeb5f1f99abd79712a69aeb28b3580e7b5b6a97fe3
parent187a8e2ef4b2aa8ca9af914cfce722886766587f (diff)
downloadsdl_ios-fd1d68630b17ff9c57e6f8f8cdb3d88b2d909dbb.tar.gz
adding struct
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj12
-rw-r--r--SmartDeviceLink/SDLMetadataStruct.h67
-rw-r--r--SmartDeviceLink/SDLMetadataStruct.m89
-rw-r--r--SmartDeviceLink/SDLNames.h4
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMetadataStructSpec.m60
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