Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removed usage of culture-sensitive string operations #1054

Merged
merged 3 commits into from Jun 17, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/DotVVM.CommandLine/Names.cs
Expand Up @@ -27,7 +27,7 @@ public static string GetClass(string name)
}

var sb = new StringBuilder(name);
sb[0] = char.ToUpper(sb[0]);
sb[0] = char.ToUpperInvariant(sb[0]);
return sb.ToString();
}

Expand All @@ -39,7 +39,7 @@ public static string GetViewModel(string viewName)
}

var sb = new StringBuilder(viewName);
sb[0] = char.ToUpper(sb[0]);
sb[0] = char.ToUpperInvariant(sb[0]);

if (!viewName.EndsWith(ViewModelClassSuffix, StringComparison.CurrentCultureIgnoreCase))
{
Expand Down
2 changes: 1 addition & 1 deletion src/DotVVM.CommandLine/OpenApi/ApiClientUtils.cs
Expand Up @@ -91,7 +91,7 @@ private static string GetOperationNameFromPath(OpenApiOperationDescription opera
var pathSegments = operation.Path.Trim('/').Split('/').Where(s => !s.Contains('{')).ToArray();
var lastPathSegment = pathSegments.LastOrDefault();
var path = string.Concat(pathSegments.Take(pathSegments.Length - 1).Select(s => s + "_"));
return path + operation.Method.ToString()[0].ToString().ToUpper() + operation.Method.ToString().Substring(1).ToLower() + ConversionUtilities.ConvertToUpperCamelCase(lastPathSegment.Replace('_', '-'), false);
return path + operation.Method.ToString()[0].ToString().ToUpperInvariant() + operation.Method.ToString().Substring(1).ToLowerInvariant() + ConversionUtilities.ConvertToUpperCamelCase(lastPathSegment.Replace('_', '-'), false);
}
}
}
14 changes: 8 additions & 6 deletions src/DotVVM.Framework.Tests/Binding/JavascriptCompilationTests.cs
Expand Up @@ -602,7 +602,7 @@ public void JsTranslator_EnumerableDistinct_NonPrimitiveTypesThrows(string bindi
public void JsTranslator_EnumerableMax(string binding, string property, bool nullable)
{
var result = CompileBinding(binding, new[] { new NamespaceImport("System.Linq") }, new[] { typeof(TestArraysViewModel) });
Assert.AreEqual($"dotvvm.translations.array.max({property}(),function(arg){{return ko.unwrap(arg);}},{(!nullable).ToString().ToLower()})", result);
Assert.AreEqual($"dotvvm.translations.array.max({property}(),function(arg){{return ko.unwrap(arg);}},{(!nullable).ToString().ToLowerInvariant()})", result);
}

[TestMethod]
Expand All @@ -629,7 +629,7 @@ public void JsTranslator_EnumerableMax(string binding, string property, bool nul
public void JsTranslator_EnumerableMax_WithSelector(string binding, string property, bool nullable)
{
var result = CompileBinding(binding, new[] { new NamespaceImport("System.Linq") }, new[] { typeof(TestArraysViewModel) });
Assert.AreEqual($"dotvvm.translations.array.max({property}(),function(item){{return -ko.unwrap(item);}},{(!nullable).ToString().ToLower()})", result);
Assert.AreEqual($"dotvvm.translations.array.max({property}(),function(item){{return -ko.unwrap(item);}},{(!nullable).ToString().ToLowerInvariant()})", result);
}

[TestMethod]
Expand All @@ -656,7 +656,7 @@ public void JsTranslator_EnumerableMax_WithSelector(string binding, string prope
public void JsTranslator_EnumerableMin(string binding, string property, bool nullable)
{
var result = CompileBinding(binding, new[] { new NamespaceImport("System.Linq") }, new[] { typeof(TestArraysViewModel) });
Assert.AreEqual($"dotvvm.translations.array.min({property}(),function(arg){{return ko.unwrap(arg);}},{(!nullable).ToString().ToLower()})", result);
Assert.AreEqual($"dotvvm.translations.array.min({property}(),function(arg){{return ko.unwrap(arg);}},{(!nullable).ToString().ToLowerInvariant()})", result);
}

[TestMethod]
Expand All @@ -683,7 +683,7 @@ public void JsTranslator_EnumerableMin(string binding, string property, bool nul
public void JsTranslator_EnumerableMin_WithSelector(string binding, string property, bool nullable)
{
var result = CompileBinding(binding, new[] { new NamespaceImport("System.Linq") }, new[] { typeof(TestArraysViewModel) });
Assert.AreEqual($"dotvvm.translations.array.min({property}(),function(item){{return -ko.unwrap(item);}},{(!nullable).ToString().ToLower()})", result);
Assert.AreEqual($"dotvvm.translations.array.min({property}(),function(item){{return -ko.unwrap(item);}},{(!nullable).ToString().ToLowerInvariant()})", result);
}

[TestMethod]
Expand Down Expand Up @@ -941,8 +941,10 @@ public void JavascriptCompilation_ApiRefreshOn()
}

[DataTestMethod]
[DataRow("StringProp.ToUpper()", "StringProp().toUpperCase()")]
[DataRow("StringProp.ToLower()", "StringProp().toLowerCase()")]
[DataRow("StringProp.ToUpper()", "StringProp().toLocaleUpperCase()")]
[DataRow("StringProp.ToLower()", "StringProp().toLocaleLowerCase()")]
[DataRow("StringProp.ToUpperInvariant()", "StringProp().toUpperCase()")]
[DataRow("StringProp.ToLowerInvariant()", "StringProp().toLowerCase()")]
[DataRow("StringProp.IndexOf('test')", "StringProp().indexOf(\"test\")")]
[DataRow("StringProp.IndexOf('test',1)", "StringProp().indexOf(\"test\",1)")]
[DataRow("StringProp.LastIndexOf('test')", "StringProp().lastIndexOf(\"test\")")]
Expand Down
Expand Up @@ -231,8 +231,12 @@ private void AddDefaultStringTranslations()
AddMethodTranslator(typeof(string), nameof(string.LastIndexOf), parameters: new[] { typeof(string), typeof(int) }, translator: new GenericMethodCompiler(
a => a[0].Member("lastIndexOf").Invoke(a[1], a[2])));
AddMethodTranslator(typeof(string), nameof(string.ToUpper), parameterCount: 0, translator: new GenericMethodCompiler(
a => a[0].Member("toUpperCase").Invoke()));
a => a[0].Member("toLocaleUpperCase").Invoke()));
AddMethodTranslator(typeof(string), nameof(string.ToLower), parameterCount: 0, translator: new GenericMethodCompiler(
a => a[0].Member("toLocaleLowerCase").Invoke()));
AddMethodTranslator(typeof(string), nameof(string.ToUpperInvariant), parameterCount: 0, translator: new GenericMethodCompiler(
a => a[0].Member("toUpperCase").Invoke()));
AddMethodTranslator(typeof(string), nameof(string.ToLowerInvariant), parameterCount: 0, translator: new GenericMethodCompiler(
a => a[0].Member("toLowerCase").Invoke()));
AddMethodTranslator(typeof(string), nameof(string.Contains), parameters: new[] { typeof(string) }, translator: new GenericMethodCompiler(
a => a[0].Member("includes").Invoke(a[1])));
Expand Down
Expand Up @@ -893,7 +893,7 @@ private BindingParserNode ReadFormattedExpression()

private static object? ParseNumberLiteral(string text, out string? error)
{
text = text.ToLower();
text = text.ToLowerInvariant();
error = null;
NumberLiteralSuffix type = NumberLiteralSuffix.None;
var lastDigit = text[text.Length - 1];
Expand Down
2 changes: 1 addition & 1 deletion src/DotVVM.Framework/Controls/KnockoutHelper.cs
Expand Up @@ -307,7 +307,7 @@ private static JsExpression TransformOptionValueToExpression(DotvvmBindableObjec
{
return null;
}
var handlerName = $"concurrency-{mode.ToString().ToLower()}";
var handlerName = $"concurrency-{mode.ToString().ToLowerInvariant()}";
if ("default".Equals(queueName))
{
return JsonConvert.ToString(handlerName);
Expand Down
2 changes: 1 addition & 1 deletion src/DotVVM.Framework/Controls/RouteLink.cs
Expand Up @@ -111,7 +111,7 @@ protected override void AddAttributesToRender(IHtmlWriter writer, IDotvvmRequest

protected virtual void WriteEnabledBinding(IHtmlWriter writer, bool binding)
{
writer.AddKnockoutDataBind("dotvvm-enable", binding.ToString().ToLower());
writer.AddKnockoutDataBind("dotvvm-enable", binding.ToString().ToLowerInvariant());
}

protected virtual void WriteEnabledBinding(IHtmlWriter writer, IValueBinding binding)
Expand Down
2 changes: 1 addition & 1 deletion src/DotVVM.Framework/Controls/RouteLinkHelpers.cs
Expand Up @@ -159,7 +159,7 @@ private static string TranslateRouteParameter<T>(DotvvmBindableObject control, K
{
expression = JsonConvert.SerializeObject(param.Value, DefaultSerializerSettingsProvider.Instance.Settings);
}
return KnockoutHelper.MakeStringLiteral(caseSensitive ? param.Key : param.Key.ToLower()) + ": " + expression;
return KnockoutHelper.MakeStringLiteral(caseSensitive ? param.Key : param.Key.ToLowerInvariant()) + ": " + expression;
}

private static void EnsureValidBindingType(IBinding binding)
Expand Down
6 changes: 3 additions & 3 deletions src/DotVVM.Framework/Controls/ValidationSummary.cs
Expand Up @@ -75,9 +75,9 @@ protected override void AddAttributesToRender(IHtmlWriter writer, IDotvvmRequest
var group = new KnockoutBindingGroup();
{
group.Add("target", expression);
group.Add("includeErrorsFromChildren", IncludeErrorsFromChildren.ToString().ToLower());
group.Add("includeErrorsFromTarget", IncludeErrorsFromTarget.ToString().ToLower());
group.Add("hideWhenValid", HideWhenValid.ToString().ToLower());
group.Add("includeErrorsFromChildren", IncludeErrorsFromChildren.ToString().ToLowerInvariant());
group.Add("includeErrorsFromTarget", IncludeErrorsFromTarget.ToString().ToLowerInvariant());
group.Add("hideWhenValid", HideWhenValid.ToString().ToLowerInvariant());
}
writer.AddKnockoutDataBind("dotvvm-validationSummary", group);

Expand Down
2 changes: 1 addition & 1 deletion src/DotVVM.Framework/Hosting/MarkupFile.cs
Expand Up @@ -18,7 +18,7 @@ public override int GetHashCode()
{
unchecked
{
return ((FullPath != null ? FullPath.ToLower().GetHashCode() : 0) * 397) ^ LastWriteDateTimeUtc.GetHashCode();
return ((FullPath != null ? FullPath.ToLowerInvariant().GetHashCode() : 0) * 397) ^ LastWriteDateTimeUtc.GetHashCode();
}
}

Expand Down
Expand Up @@ -156,8 +156,8 @@ private static JObject CreateDateInfoJson(DateTimeFormatInfo di)
names = di.MonthNames,
namesAbbr = di.AbbreviatedMonthNames
},
AM = new[] { di.AMDesignator, di.AMDesignator.ToLower(), di.AMDesignator.ToUpper() },
PM = new[] { di.PMDesignator, di.PMDesignator.ToLower(), di.PMDesignator.ToUpper() },
AM = new[] { di.AMDesignator, di.AMDesignator.ToLowerInvariant(), di.AMDesignator.ToUpperInvariant() },
PM = new[] { di.PMDesignator, di.PMDesignator.ToLowerInvariant(), di.PMDesignator.ToUpperInvariant() },
eras = di.Calendar.Eras.Select(era => new { offset = 0, start = (string)null, name = di.GetEraName(era) }).ToArray(),
twoDigitYearMax = di.Calendar.TwoDigitYearMax,
patterns = new
Expand Down
Expand Up @@ -156,7 +156,7 @@ private string GetOperationNameFromPath(SwaggerOperationDescription operation)
var pathSegments = operation.Path.Trim('/').Split('/').Where(s => !s.Contains('{')).ToArray();
var lastPathSegment = pathSegments.LastOrDefault();
var path = string.Concat(pathSegments.Take(pathSegments.Length - 1).Select(s => s + "_"));
return path + operation.Method.ToString()[0].ToString().ToUpper() + operation.Method.ToString().Substring(1).ToLower() + ConversionUtilities.ConvertToUpperCamelCase(lastPathSegment.Replace('_', '-'), false);
return path + operation.Method.ToString()[0].ToString().ToUpperInvariant() + operation.Method.ToString().Substring(1).ToLowerInvariant() + ConversionUtilities.ConvertToUpperCamelCase(lastPathSegment.Replace('_', '-'), false);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/DotVVM.Samples.Tests/ErrorsTests.cs
Expand Up @@ -83,7 +83,7 @@ public void Error_NotAllowedHardCodedPropertyValue()
AssertUI.InnerText(browser.First("[class='exceptionMessage']")
,
s =>
s.ToLower().Contains("was not recognized as a valid Boolean.".ToLower())
s.ToLowerInvariant().Contains("was not recognized as a valid boolean.")
, "Expected message is 'was not recognized as a valid Boolean.'");

AssertUI.InnerText(browser.First("[class='errorUnderline']")
Expand Down
Expand Up @@ -132,7 +132,7 @@ private void CheckRadioButtonsState(IBrowserWrapper browser, RadioButtonValues s
radios.RemoveAt(checkedRadioIndex);
radios.ForEach(s => AssertUI.IsNotChecked(s));

AssertUI.TextEquals(selectedColorElement, selectedColor.ToString().ToLower());
AssertUI.TextEquals(selectedColorElement, selectedColor.ToString().ToLowerInvariant());
}

private void RunComplexViewModelProtectionTest(Action<IBrowserWrapper> beforePostback, Action<IBrowserWrapper> afterPostback)
Expand Down