From b506b5c8e91b11212fdf475c49edde7a61ad8a68 Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 16 Dec 2013 17:00:38 +0100 Subject: [PATCH] U4-3710 - bugfix --- .../Strings/DefaultShortStringHelper.cs | 18 +++++++++++++----- .../DefaultShortStringHelperTests.cs | 9 ++++++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Core/Strings/DefaultShortStringHelper.cs b/src/Umbraco.Core/Strings/DefaultShortStringHelper.cs index bb85984d0d..656cdb5317 100644 --- a/src/Umbraco.Core/Strings/DefaultShortStringHelper.cs +++ b/src/Umbraco.Core/Strings/DefaultShortStringHelper.cs @@ -571,7 +571,9 @@ function validateSafeAlias(id, value, immediate, callback) {{ for (var i = 0; i < ilen; i++) { var c = input[i]; - var isTerm = config.IsTerm(c, opos == 0); + // leading as long as StateBreak and ipos still zero + var leading = state == StateBreak && ipos == 0; + var isTerm = config.IsTerm(c, leading); //var isDigit = char.IsDigit(c); var isUpper = char.IsUpper(c); // false for digits, symbols... @@ -583,6 +585,12 @@ function validateSafeAlias(id, value, immediate, callback) {{ if (isPair) throw new NotSupportedException("Surrogate pairs are not supported."); + Console.WriteLine("CHAR '{0}' {1} {2} - {3} - {4}/{5} {6}", + c, + isTerm ? "term" : "!term", isUpper ? "upper" : "!upper", + state, + i, ipos, leading ? "leading" : "!leading"); + switch (state) { // within a break @@ -689,10 +697,10 @@ function validateSafeAlias(id, value, immediate, callback) {{ CleanStringType caseType, CultureInfo culture, bool isAcronym) { var term = input.Substring(ipos, len); - //Console.WriteLine("TERM \"{0}\" {1} {2}", - // term, - // isAcronym ? "acronym" : "word", - // caseType); + Console.WriteLine("TERM \"{0}\" {1} {2}", + term, + isAcronym ? "acronym" : "word", + caseType); if (isAcronym) { diff --git a/src/Umbraco.Tests/CoreStrings/DefaultShortStringHelperTests.cs b/src/Umbraco.Tests/CoreStrings/DefaultShortStringHelperTests.cs index 09df7d0abf..6828e4ea88 100644 --- a/src/Umbraco.Tests/CoreStrings/DefaultShortStringHelperTests.cs +++ b/src/Umbraco.Tests/CoreStrings/DefaultShortStringHelperTests.cs @@ -129,7 +129,7 @@ namespace Umbraco.Tests.CoreStrings StringType = CleanStringType.Utf8 | CleanStringType.Unchanged, Separator = '*' }); - Assert.AreEqual("0123foo*bar*nil", helper.CleanString("0123foo_bar nil", CleanStringType.Alias)); + Assert.AreEqual("0123foo*bar*543*nil*321", helper.CleanString("0123foo_bar 543 nil 321", CleanStringType.Alias)); helper = new DefaultShortStringHelper() .WithConfig(CleanStringType.Alias, new DefaultShortStringHelper.Config @@ -139,8 +139,11 @@ namespace Umbraco.Tests.CoreStrings StringType = CleanStringType.Utf8 | CleanStringType.Unchanged, Separator = '*' }); - Assert.AreEqual("foo*bar*nil", helper.CleanString("0123foo_bar nil", CleanStringType.Alias)); - Assert.AreEqual("foo*bar*nil", helper.CleanString("0123 foo_bar nil", CleanStringType.Alias)); + Assert.AreEqual("foo*bar*543*nil*321", helper.CleanString("0123foo_bar 543 nil 321", CleanStringType.Alias)); + Assert.AreEqual("foo*bar*543*nil*321", helper.CleanString("0123 foo_bar 543 nil 321", CleanStringType.Alias)); + + helper = new DefaultShortStringHelper().WithDefaultConfig(); + Assert.AreEqual("child2", helper.CleanStringForSafeAlias("1child2")); } [Test]