Skip to content

Commit dfe9207

Browse files
Variable default value if int value is string (#379)
* Variable default value if int value is string * variables test
1 parent 186cc66 commit dfe9207

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

AndroidSDKCore/src/main/java/com/leanplum/Var.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,22 @@ private void cacheComputedValues() {
302302
numberValue = Double.valueOf(stringValue);
303303
} catch (NumberFormatException e) {
304304
numberValue = null;
305+
if (defaultValue instanceof Short) {
306+
value = (T) (Short) ((Number) defaultValue).shortValue();
307+
numberValue = Double.valueOf(((Number) defaultValue).shortValue());
308+
} else if (defaultValue instanceof Integer) {
309+
value = (T) (Integer) ((Number) defaultValue).intValue();
310+
numberValue = Double.valueOf(((Number) defaultValue).intValue());
311+
} else if (defaultValue instanceof Long) {
312+
value = (T) (Long) ((Number) defaultValue).longValue();
313+
numberValue = Double.valueOf(((Number) defaultValue).longValue());
314+
} else if (defaultValue instanceof Float) {
315+
value = (T) (Float) ((Number) defaultValue).floatValue();
316+
numberValue = Double.valueOf(((Number) defaultValue).floatValue());
317+
} else if (defaultValue instanceof Double) {
318+
value = (T) (Double) ((Number) defaultValue).doubleValue();
319+
numberValue = Double.valueOf(((Number) defaultValue).doubleValue());
320+
}
305321
}
306322
} else if (value instanceof Number) {
307323
stringValue = "" + value;

AndroidSDKTests/src/test/java/com/leanplum/LeanplumTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,7 @@ public void testVariables() throws Exception {
829829
Var<Integer> colorVariable = Var.defineColor("test_color", 12345);
830830
Var<String> groupStringVariable = Var.define("groups.strings", "groups_string_test");
831831
Var<Integer> groupIntegerVariable = Var.define("groups.integers", 5);
832+
Var<Integer> integerVariableString = Var.define("test_integer_string_invalid", 10);
832833

833834
setupSDK(mContext, "/responses/simple_start_response.json");
834835

@@ -844,6 +845,7 @@ public void testVariables() throws Exception {
844845
assertEquals(listVariable.defaultValue(), VarCache.getVariable("test_list").value());
845846
assertEquals(dictionaryVariable.defaultValue(), VarCache.getVariable("test_dictionary")
846847
.value());
848+
assertEquals(integerVariable.defaultValue(), VarCache.getVariable("test_integer_string_invalid").value());
847849

848850
// Validate values.
849851
assertEquals(colorVariable.value(), VarCache.getVariable("test_color").value());

AndroidSDKTests/src/test/resources/responses/simple_start_response.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,8 @@
308308
"floatVariable": 5,
309309
"integerVariable": 1,
310310
"fileVariable": "leanplum_watermark.jpg",
311-
"stringVariable": "test_string"
311+
"stringVariable": "test_string",
312+
"integerVariableString": "test"
312313
},
313314
"latestVersion": "1.4.0.2",
314315
"vars": {

0 commit comments

Comments
 (0)