Skip to content

Commit 74eca88

Browse files
update to allow returning nil if the requested variable is not the right type or does not exist. (#287)
1 parent fe510ca commit 74eca88

File tree

4 files changed

+32
-32
lines changed

4 files changed

+32
-32
lines changed

OptimizelySDKCore/OptimizelySDKCore/Optimizely.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ typedef NS_ENUM(NSInteger, OPTLYLiveVariableError) {
145145
* @param attributes The user's attributes.
146146
* @return BOOL feature variable value.
147147
*/
148-
- (BOOL)getFeatureVariableBoolean:(nullable NSString *)featureKey
148+
- (NSNumber *)getFeatureVariableBoolean:(nullable NSString *)featureKey
149149
variableKey:(nullable NSString *)variableKey
150150
userId:(nullable NSString *)userId
151151
attributes:(nullable NSDictionary<NSString *, NSString *> *)attributes;
@@ -158,7 +158,7 @@ typedef NS_ENUM(NSInteger, OPTLYLiveVariableError) {
158158
* @param attributes The user's attributes.
159159
* @return double feature variable value of type double.
160160
*/
161-
- (double)getFeatureVariableDouble:(nullable NSString *)featureKey
161+
- (NSNumber *)getFeatureVariableDouble:(nullable NSString *)featureKey
162162
variableKey:(nullable NSString *)variableKey
163163
userId:(nullable NSString *)userId
164164
attributes:(nullable NSDictionary<NSString *, NSString *> *)attributes;
@@ -171,7 +171,7 @@ typedef NS_ENUM(NSInteger, OPTLYLiveVariableError) {
171171
* @param attributes The user's attributes.
172172
* @return int feature variable value of type integer.
173173
*/
174-
- (int)getFeatureVariableInteger:(nullable NSString *)featureKey
174+
- (NSNumber *)getFeatureVariableInteger:(nullable NSString *)featureKey
175175
variableKey:(nullable NSString *)variableKey
176176
userId:(nullable NSString *)userId
177177
attributes:(nullable NSDictionary<NSString *, NSString *> *)attributes;

OptimizelySDKCore/OptimizelySDKCore/Optimizely.m

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ - (NSString *)getFeatureVariableValueForType:(NSString *)variableType
295295
return variableValue;
296296
}
297297

298-
- (BOOL)getFeatureVariableBoolean:(nullable NSString *)featureKey
298+
- (NSNumber *)getFeatureVariableBoolean:(nullable NSString *)featureKey
299299
variableKey:(nullable NSString *)variableKey
300300
userId:(nullable NSString *)userId
301301
attributes:(nullable NSDictionary<NSString *, NSString *> *)attributes {
@@ -305,14 +305,14 @@ - (BOOL)getFeatureVariableBoolean:(nullable NSString *)featureKey
305305
variableKey:variableKey
306306
userId:userId
307307
attributes:attributes];
308-
BOOL booleanValue = false;
308+
NSNumber* booleanValue = nil;
309309
if (variableValue) {
310-
booleanValue = [variableValue boolValue];
310+
booleanValue = @([variableValue boolValue]);
311311
}
312312
return booleanValue;
313313
}
314314

315-
- (double)getFeatureVariableDouble:(nullable NSString *)featureKey
315+
- (NSNumber *)getFeatureVariableDouble:(nullable NSString *)featureKey
316316
variableKey:(nullable NSString *)variableKey
317317
userId:(nullable NSString *)userId
318318
attributes:(nullable NSDictionary<NSString *, NSString *> *)attributes {
@@ -322,15 +322,15 @@ - (double)getFeatureVariableDouble:(nullable NSString *)featureKey
322322
variableKey:variableKey
323323
userId:userId
324324
attributes:attributes];
325-
double doubleValue = 0.0;
325+
NSNumber* doubleValue = nil;
326326
if (variableValue) {
327-
doubleValue = [variableValue doubleValue];
327+
doubleValue = @([variableValue doubleValue]);
328328
}
329329
return doubleValue;
330330
}
331331

332332

333-
- (int)getFeatureVariableInteger:(nullable NSString *)featureKey
333+
- (NSNumber *)getFeatureVariableInteger:(nullable NSString *)featureKey
334334
variableKey:(nullable NSString *)variableKey
335335
userId:(nullable NSString *)userId
336336
attributes:(nullable NSDictionary<NSString *, NSString *> *)attributes {
@@ -340,9 +340,9 @@ - (int)getFeatureVariableInteger:(nullable NSString *)featureKey
340340
variableKey:variableKey
341341
userId:userId
342342
attributes:attributes];
343-
int intValue = 0;
343+
NSNumber* intValue = nil;
344344
if (variableValue) {
345-
intValue = [variableValue intValue];
345+
intValue = @([variableValue intValue]);
346346
}
347347
return intValue;
348348
}

OptimizelySDKCore/OptimizelySDKCoreTests/OptimizelyTest.m

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ - (void)testGetFeatureVariableBooleanWithTrue {
496496
NSString *expectedValueString = @"true";
497497
BOOL expectedValue = true;
498498
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyTrue expectedReturn:expectedValueString];
499-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyTrue userId:kUserId attributes:nil],
499+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyTrue userId:kUserId attributes:nil] boolValue],
500500
@"should return %@ for feature variable value %@", expectedValue ? @"true" : @"false", expectedValueString);
501501
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
502502
featureKey:featureKey
@@ -515,7 +515,7 @@ - (void)testGetFeatureVariableBooleanWithFalse {
515515
NSString *expectedValueString = @"false";
516516
BOOL expectedValue = false;
517517
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyFalse expectedReturn:expectedValueString];
518-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyFalse userId:kUserId attributes:nil],
518+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyFalse userId:kUserId attributes:nil] boolValue],
519519
@"should return %@ for feature variable value %@", expectedValue ? @"true" : @"false", expectedValueString);
520520
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
521521
featureKey:featureKey
@@ -534,7 +534,7 @@ - (void)testGetFeatureVariableBooleanWithInvalidBoolean {
534534
NSString *expectedValueString = @"nonBooleanValue";
535535
BOOL expectedValue = false;
536536
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyNonBoolean expectedReturn:expectedValueString];
537-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyNonBoolean userId:kUserId attributes:nil],
537+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyNonBoolean userId:kUserId attributes:nil] boolValue],
538538
@"should return %@ for feature variable value %@", expectedValue ? @"true" : @"false", expectedValueString);
539539
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
540540
featureKey:featureKey
@@ -553,7 +553,7 @@ - (void)testGetFeatureVariableBooleanWithNil {
553553
NSString *expectedValueString = @"nonBooleanValue";
554554
BOOL expectedValue = false;
555555
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyNull expectedReturn:expectedValueString];
556-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyNull userId:kUserId attributes:nil],
556+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableBoolean:featureKey variableKey:variableKeyNull userId:kUserId attributes:nil] boolValue],
557557
@"should return %@ for feature variable value %@", expectedValue ? @"true" : @"false", expectedValueString);
558558
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
559559
featureKey:featureKey
@@ -572,7 +572,7 @@ - (void)testGetFeatureVariableDoubleWithDouble {
572572
NSString *expectedValueString = @"100.54";
573573
double expectedValue = 100.54;
574574
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyDouble expectedReturn:expectedValueString];
575-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableDouble:featureKey variableKey:variableKeyDouble userId:kUserId attributes:nil],
575+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableDouble:featureKey variableKey:variableKeyDouble userId:kUserId attributes:nil] doubleValue],
576576
@"should return %f for feature variable value %@", expectedValue, expectedValueString);
577577
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
578578
featureKey:featureKey
@@ -590,7 +590,7 @@ - (void)testGetFeatureVariableDoubleWithInt {
590590
NSString *expectedValueString = @"100";
591591
double expectedValue = 100;
592592
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyInt expectedReturn:expectedValueString];
593-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableDouble:featureKey variableKey:variableKeyInt userId:kUserId attributes:nil],
593+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableDouble:featureKey variableKey:variableKeyInt userId:kUserId attributes:nil] doubleValue],
594594
@"should return %f for feature variable value %@", expectedValue, expectedValueString);
595595
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
596596
featureKey:featureKey
@@ -608,8 +608,8 @@ - (void)testGetFeatureVariableDoubleWithInvalidDouble {
608608
NSString *expectedValueString = @"nonDoubleValue";
609609
double expectedValue = 0.0;
610610
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyNonDouble expectedReturn:expectedValueString];
611-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableDouble:featureKey variableKey:variableKeyNonDouble userId:kUserId attributes:nil],
612-
@"should return %f for feature variable value %@", expectedValue, expectedValueString);
611+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableDouble:featureKey variableKey:variableKeyNonDouble userId:kUserId attributes:nil] doubleValue],
612+
@"should return nil for feature variable value %@", expectedValueString);
613613
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
614614
featureKey:featureKey
615615
variableKey:variableKeyNonDouble
@@ -624,10 +624,10 @@ - (void)testGetFeatureVariableDoubleWithNil {
624624
NSString *featureVariableType = FeatureVariableTypeDouble;
625625

626626
NSString *expectedValueString = nil;
627-
double expectedValue = 0.0;
627+
NSNumber* expectedValue = nil;
628628
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyNull expectedReturn:expectedValueString];
629629
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableDouble:featureKey variableKey:variableKeyNull userId:kUserId attributes:nil],
630-
@"should return %f for feature variable value %@", expectedValue, expectedValueString);
630+
@"should return nil for feature variable value %@", expectedValueString);
631631
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
632632
featureKey:featureKey
633633
variableKey:variableKeyNull
@@ -645,7 +645,7 @@ - (void)testGetFeatureVariableIntegerWithInt {
645645
NSString *expectedValueString = @"100";
646646
int expectedValue = 100;
647647
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyInt expectedReturn:expectedValueString];
648-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableKeyInt userId:kUserId attributes:nil],
648+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableKeyInt userId:kUserId attributes:nil] integerValue],
649649
@"should return %d for feature variable value %@", expectedValue, expectedValueString);
650650
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
651651
featureKey:featureKey
@@ -664,7 +664,7 @@ - (void)testGetFeatureVariableIntegerWithDouble {
664664
NSString *expectedValueString = @"100.45";
665665
int expectedValue = 100;
666666
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyDouble expectedReturn:expectedValueString];
667-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableKeyDouble userId:kUserId attributes:nil],
667+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableKeyDouble userId:kUserId attributes:nil] integerValue],
668668
@"should return %d for feature variable value %@", expectedValue, expectedValueString);
669669
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
670670
featureKey:featureKey
@@ -683,7 +683,7 @@ - (void)testGetFeatureVariableIntegerWithInvalidDouble {
683683
NSString *expectedValueString = @"nonIntegerValue";
684684
int expectedValue = 0;
685685
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableNonInt expectedReturn:expectedValueString];
686-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableNonInt userId:kUserId attributes:nil],
686+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableNonInt userId:kUserId attributes:nil] integerValue],
687687
@"should return %d for feature variable value %@", expectedValue, expectedValueString);
688688
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
689689
featureKey:featureKey
@@ -702,7 +702,7 @@ - (void)testGetFeatureVariableIntegerWithNil {
702702
NSString *expectedValueString = nil;
703703
int expectedValue = 0;
704704
id optimizelyMock = [self getOptimizelyMockForFeatureVariableType:featureVariableType variableKey:variableKeyNull expectedReturn:expectedValueString];
705-
XCTAssertEqual(expectedValue, [optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableKeyNull userId:kUserId attributes:nil],
705+
XCTAssertEqual(expectedValue, [[optimizelyMock getFeatureVariableInteger:featureKey variableKey:variableKeyNull userId:kUserId attributes:nil] integerValue],
706706
@"should return %d for feature variable value %@", expectedValue, expectedValueString);
707707
OCMVerify([optimizelyMock getFeatureVariableValueForType:featureVariableType
708708
featureKey:featureKey

OptimizelySDKShared/OptimizelySDKShared/OPTLYClient.m

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,14 @@ - (BOOL)isFeatureEnabled:(nullable NSString *)featureKey
146146
}
147147
}
148148

149-
-(BOOL)getFeatureVariableBoolean:(NSString *)featureKey
149+
-(NSNumber *)getFeatureVariableBoolean:(NSString *)featureKey
150150
variableKey:(NSString *)variableKey
151151
userId:(NSString *)userId
152152
attributes:(NSDictionary<NSString *,NSString *> *)attributes {
153153
if (self.optimizely == nil) {
154154
[self.logger logMessage:OPTLYLoggerMessagesClientDummyOptimizelyError
155155
withLevel:OptimizelyLogLevelError];
156-
return false;
156+
return nil;
157157
}
158158
else {
159159
return [self.optimizely getFeatureVariableBoolean:featureKey
@@ -163,14 +163,14 @@ -(BOOL)getFeatureVariableBoolean:(NSString *)featureKey
163163
}
164164
}
165165

166-
- (double)getFeatureVariableDouble:(nullable NSString *)featureKey
166+
- (NSNumber *)getFeatureVariableDouble:(nullable NSString *)featureKey
167167
variableKey:(nullable NSString *)variableKey
168168
userId:(nullable NSString *)userId
169169
attributes:(nullable NSDictionary<NSString *,NSString *> *)attributes {
170170
if (self.optimizely == nil) {
171171
[self.logger logMessage:OPTLYLoggerMessagesClientDummyOptimizelyError
172172
withLevel:OptimizelyLogLevelError];
173-
return 0.0;
173+
return nil;
174174
}
175175
else {
176176
return [self.optimizely getFeatureVariableDouble:featureKey
@@ -181,14 +181,14 @@ - (double)getFeatureVariableDouble:(nullable NSString *)featureKey
181181
}
182182

183183

184-
- (int)getFeatureVariableInteger:(nullable NSString *)featureKey
184+
- (NSNumber *)getFeatureVariableInteger:(nullable NSString *)featureKey
185185
variableKey:(nullable NSString *)variableKey
186186
userId:(nullable NSString *)userId
187187
attributes:(nullable NSDictionary<NSString *,NSString *> *)attributes {
188188
if (self.optimizely == nil) {
189189
[self.logger logMessage:OPTLYLoggerMessagesClientDummyOptimizelyError
190190
withLevel:OptimizelyLogLevelError];
191-
return 0;
191+
return nil;
192192
}
193193
else {
194194
return [self.optimizely getFeatureVariableInteger:featureKey

0 commit comments

Comments
 (0)