diff --git a/src/Test/TestCases.Workflows/WF4Samples/LiteralTests.cs b/src/Test/TestCases.Workflows/WF4Samples/LiteralTests.cs index 2d170690..16c709c8 100644 --- a/src/Test/TestCases.Workflows/WF4Samples/LiteralTests.cs +++ b/src/Test/TestCases.Workflows/WF4Samples/LiteralTests.cs @@ -40,6 +40,53 @@ public void CanConvertToString_EmptyString_ReturnsFalse() literal.CanConvertToString(null).ShouldBeFalse(); } + [Theory] + [InlineData(" ")] + [InlineData(" ")] + [InlineData("\t")] + public void CanConvertToString_WhitespaceOnlyString_ReturnsFalse(string value) + { + var literal = new Literal(value); + literal.CanConvertToString(null).ShouldBeFalse(); + } + + [Theory] + [InlineData(" ")] + [InlineData(" ")] + [InlineData("\t")] + public void XamlSerialize_WhitespaceOnlyStringLiteral_WritesLiteralElement(string value) + { + var argument = new InArgument(new Literal(value)); + + var xaml = XamlServices.Save(argument); + + // Literal declares Value - a string - as its content property, which the XAML parser + // keeps; InArgument declares Expression, which it does not. + xaml.ShouldContain("(new Literal(value)); + + var xaml = XamlServices.Save(argument); + var deserialized = (InArgument)XamlServices.Load(new StringReader(xaml)); + + deserialized.Expression.ShouldBeOfType>(); + ((Literal)deserialized.Expression).Value.ShouldBe(value); + } + + [Fact] + public void CanConvertToString_StringWithSurroundingWhitespace_ReturnsTrue() + { + var literal = new Literal(" x "); + literal.CanConvertToString(null).ShouldBeTrue(); + } + [Fact] public void CanConvertToString_IntValue_ReturnsTrue() { diff --git a/src/UiPath.Workflow.Runtime/Expressions/Literal.cs b/src/UiPath.Workflow.Runtime/Expressions/Literal.cs index add1c8ca..5383d7e4 100644 --- a/src/UiPath.Workflow.Runtime/Expressions/Literal.cs +++ b/src/UiPath.Workflow.Runtime/Expressions/Literal.cs @@ -61,7 +61,7 @@ public bool CanConvertToString(IValueSerializerContext context) if (valueType == TypeHelper.StringType) { string myValue = Value as string; - if (string.IsNullOrEmpty(myValue)) + if (string.IsNullOrWhiteSpace(myValue)) { return false; }