Skip to content

Commit 32e3f29

Browse files
fix(locale): GetFeatureVariableDouble was not returning expected value for FR culture (#209)
1 parent 6f40016 commit 32e3f29

File tree

2 files changed

+83
-3
lines changed

2 files changed

+83
-3
lines changed

OptimizelySDK.Tests/OptimizelyTest.cs

+81-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019, Optimizely
2+
* Copyright 2017-2020, Optimizely
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -32,6 +32,8 @@
3232
using OptimizelySDK.Config;
3333
using OptimizelySDK.Event.Entity;
3434
using OptimizelySDK.OptlyConfig;
35+
using System.Globalization;
36+
using System.Threading;
3537

3638
namespace OptimizelySDK.Tests
3739
{
@@ -1175,6 +1177,74 @@ public void TestGetFeatureVariableBooleanReturnsCorrectValue()
11751177
Assert.Null(OptimizelyMock.Object.GetFeatureVariableBoolean(featureKey, variableKeyNull, TestUserId, null));
11761178
}
11771179

1180+
[Test]
1181+
public void TestGetFeatureVariableDoubleFRCulture()
1182+
{
1183+
SetCulture("en-US");
1184+
var fallbackConfigManager = new FallbackProjectConfigManager(Config);
1185+
1186+
var optimizely = new Optimizely(fallbackConfigManager);
1187+
1188+
var doubleValue = optimizely.GetFeatureVariableDouble("double_single_variable_feature", "double_variable", "testUser1");
1189+
1190+
Assert.AreEqual(doubleValue, 14.99);
1191+
1192+
SetCulture("fr-FR");
1193+
var doubleValueFR = optimizely.GetFeatureVariableDouble("double_single_variable_feature", "double_variable", "testUser1");
1194+
Assert.AreEqual(doubleValueFR, 14.99);
1195+
}
1196+
1197+
[Test]
1198+
public void TestGetFeatureVariableIntegerFRCulture()
1199+
{
1200+
SetCulture("en-US");
1201+
var fallbackConfigManager = new FallbackProjectConfigManager(Config);
1202+
1203+
var optimizely = new Optimizely(fallbackConfigManager);
1204+
1205+
var integerValue = optimizely.GetFeatureVariableInteger("integer_single_variable_feature", "integer_variable", "testUser1");
1206+
1207+
Assert.AreEqual(integerValue, 13);
1208+
1209+
SetCulture("fr-FR");
1210+
var integerValueFR = optimizely.GetFeatureVariableInteger("integer_single_variable_feature", "integer_variable", "testUser1");
1211+
Assert.AreEqual(integerValueFR, 13);
1212+
}
1213+
1214+
[Test]
1215+
public void TestGetFeatureVariableBooleanFRCulture()
1216+
{
1217+
SetCulture("en-US");
1218+
var fallbackConfigManager = new FallbackProjectConfigManager(Config);
1219+
1220+
var optimizely = new Optimizely(fallbackConfigManager);
1221+
1222+
var booleanValue = optimizely.GetFeatureVariableBoolean("boolean_single_variable_feature", "boolean_variable", "testUser1");
1223+
1224+
Assert.AreEqual(booleanValue, false);
1225+
1226+
SetCulture("fr-FR");
1227+
var booleanValueFR = optimizely.GetFeatureVariableBoolean("boolean_single_variable_feature", "boolean_variable", "testUser1");
1228+
Assert.AreEqual(booleanValueFR, false);
1229+
}
1230+
1231+
[Test]
1232+
public void TestGetFeatureVariableStringFRCulture()
1233+
{
1234+
SetCulture("en-US");
1235+
var fallbackConfigManager = new FallbackProjectConfigManager(Config);
1236+
1237+
var optimizely = new Optimizely(fallbackConfigManager);
1238+
1239+
var stringValue = optimizely.GetFeatureVariableString("string_single_variable_feature", "string_variable", "testUser1");
1240+
1241+
Assert.AreEqual(stringValue, "cta_1");
1242+
1243+
SetCulture("fr-FR");
1244+
var stringValueFR = optimizely.GetFeatureVariableString("string_single_variable_feature", "string_variable", "testUser1");
1245+
Assert.AreEqual(stringValueFR, "cta_1");
1246+
}
1247+
11781248
[Test]
11791249
public void TestGetFeatureVariableDoubleReturnsCorrectValue()
11801250
{
@@ -3426,5 +3496,15 @@ public void TestGetOptimizelyConfigNullConfig()
34263496
}
34273497

34283498
#endregion
3499+
3500+
3501+
#region Test Culture
3502+
public static void SetCulture(string culture)
3503+
{
3504+
var ci1 = new CultureInfo(culture);
3505+
Thread.CurrentThread.CurrentCulture = ci1;
3506+
Thread.CurrentThread.CurrentUICulture = ci1;
3507+
}
3508+
#endregion
34293509
}
34303510
}

OptimizelySDK/Optimizely.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -795,8 +795,8 @@ private object GetTypeCastedVariableValue(string value, FeatureVariable.Variable
795795
bool.TryParse(value, out bool booleanValue);
796796
result = booleanValue;
797797
break;
798-
case FeatureVariable.VariableType.DOUBLE:
799-
double.TryParse(value, out double doubleValue);
798+
case FeatureVariable.VariableType.DOUBLE:
799+
double.TryParse(value, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.InvariantCulture, out double doubleValue);
800800
result = doubleValue;
801801
break;
802802
case FeatureVariable.VariableType.INTEGER:

0 commit comments

Comments
 (0)