From 4481f6d9ec1a0f74a80f5d02a717e6141c5144a6 Mon Sep 17 00:00:00 2001 From: Muhammad Fahad Ahmed Date: Tue, 3 Apr 2018 19:52:35 +0500 Subject: [PATCH 1/2] GetEnabledFeatures now returns sorted features list. --- OptimizelySDK/Optimizely.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/OptimizelySDK/Optimizely.cs b/OptimizelySDK/Optimizely.cs index 39817078..769b4cd8 100644 --- a/OptimizelySDK/Optimizely.cs +++ b/OptimizelySDK/Optimizely.cs @@ -591,8 +591,7 @@ public List GetEnabledFeatures(string userId, UserAttributes userAttribu enabledFeaturesList.Add(featureKey); } - enabledFeaturesList.Sort(); - + enabledFeaturesList.Sort((s1, s2) => string.Compare(s1, s2, true)); return enabledFeaturesList; } From e3bc4d7903f4fded923fb26584646ac695a1131f Mon Sep 17 00:00:00 2001 From: Sohail Hussain Date: Tue, 3 Apr 2018 14:39:06 -0700 Subject: [PATCH 2/2] Ignore case sorting test case & revised implementation --- OptimizelySDK.Tests/OptimizelyTest.cs | 7 +++++-- OptimizelySDK.Tests/ProjectConfigTest.cs | 1 + OptimizelySDK.Tests/TestData.json | 13 ++++++++++++- OptimizelySDK/Optimizely.cs | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/OptimizelySDK.Tests/OptimizelyTest.cs b/OptimizelySDK.Tests/OptimizelyTest.cs index a716affa..45820ef9 100644 --- a/OptimizelySDK.Tests/OptimizelyTest.cs +++ b/OptimizelySDK.Tests/OptimizelyTest.cs @@ -1815,10 +1815,11 @@ public void TestGetEnabledFeaturesWithSomeFeaturesEnabledForUser() public void TestGetEnabledFeaturesReturnsSortedList() { string[] unsortedFeaturesList = - { + { + "Double_single_variable_feature_ignorecase", "double_single_variable_feature", "boolean_feature", - "string_single_variable_feature", + "string_single_variable_feature", "multi_variate_feature", "empty_feature", "boolean_single_variable_feature" @@ -1828,6 +1829,8 @@ public void TestGetEnabledFeaturesReturnsSortedList() "boolean_feature", "boolean_single_variable_feature", "double_single_variable_feature", + //It must come first, if case-sensitive sorted otherwise should come at 4th place + "Double_single_variable_feature_ignorecase", "empty_feature", "multi_variate_feature", "string_single_variable_feature", diff --git a/OptimizelySDK.Tests/ProjectConfigTest.cs b/OptimizelySDK.Tests/ProjectConfigTest.cs index 18fa24d8..f7a055db 100644 --- a/OptimizelySDK.Tests/ProjectConfigTest.cs +++ b/OptimizelySDK.Tests/ProjectConfigTest.cs @@ -356,6 +356,7 @@ public void TestInit() { { "boolean_feature", Config.GetFeatureFlagFromKey("boolean_feature") }, { "double_single_variable_feature", Config.GetFeatureFlagFromKey("double_single_variable_feature") }, + { "Double_single_variable_feature_ignorecase", Config.GetFeatureFlagFromKey("Double_single_variable_feature_ignorecase") }, { "integer_single_variable_feature", Config.GetFeatureFlagFromKey("integer_single_variable_feature") }, { "boolean_single_variable_feature", Config.GetFeatureFlagFromKey("boolean_single_variable_feature") }, { "string_single_variable_feature", Config.GetFeatureFlagFromKey("string_single_variable_feature") }, diff --git a/OptimizelySDK.Tests/TestData.json b/OptimizelySDK.Tests/TestData.json index 500ab885..15411695 100644 --- a/OptimizelySDK.Tests/TestData.json +++ b/OptimizelySDK.Tests/TestData.json @@ -434,7 +434,18 @@ "rolloutId": "", "experimentIds": ["7723330021", "7718750065"], "variables": [] - }, { + }, + { + "id": "1555892", + "key": "Double_single_variable_feature_ignorecase", + "rolloutId": "", + "experimentIds": [ + "7723330021", + "7718750065" + ], + "variables": [] + }, + { "id": "155550", "key": "double_single_variable_feature", "rolloutId": "", diff --git a/OptimizelySDK/Optimizely.cs b/OptimizelySDK/Optimizely.cs index 769b4cd8..b687ec39 100644 --- a/OptimizelySDK/Optimizely.cs +++ b/OptimizelySDK/Optimizely.cs @@ -591,7 +591,7 @@ public List GetEnabledFeatures(string userId, UserAttributes userAttribu enabledFeaturesList.Add(featureKey); } - enabledFeaturesList.Sort((s1, s2) => string.Compare(s1, s2, true)); + enabledFeaturesList.Sort(StringComparer.OrdinalIgnoreCase); return enabledFeaturesList; }