public void ExpressionPropertyTests_StringExpression() { var data = new { test = "joe" }; var str = new StringExpression("test"); Assert.AreEqual("=`test`", str.ExpressionText); Assert.IsNull(str.Value); Assert.AreEqual(str.ToString(), JsonConvert.DeserializeObject <StringExpression>(JsonConvert.SerializeObject(str, settings: settings), settings: settings).ToString()); var(result, error) = str.TryGetValue(data); Assert.AreEqual("test", result); Assert.IsNull(error); str = new StringExpression("=test"); Assert.AreEqual("=test", str.ExpressionText); Assert.IsNull(str.Value); Assert.AreEqual(str.ToString(), JsonConvert.DeserializeObject <StringExpression>(JsonConvert.SerializeObject(str, settings: settings), settings: settings).ToString()); (result, error) = str.TryGetValue(data); Assert.AreEqual("joe", result); Assert.IsNull(error); str = new StringExpression("Hello ${test}"); Assert.AreEqual("=`Hello ${test}`", str.ExpressionText); Assert.IsNull(str.Value); Assert.AreEqual(str.ToString(), JsonConvert.DeserializeObject <StringExpression>(JsonConvert.SerializeObject(str, settings: settings), settings: settings).ToString()); (result, error) = str.TryGetValue(data); Assert.AreEqual("Hello joe", result); Assert.IsNull(error); }
public void ExpressionPropertyTests_StringExpression() { var data = new { test = "joe" }; var str = new StringExpression("test"); Assert.Equal("=`test`", str.ExpressionText); Assert.Null(str.Value); Assert.Equal(str.ToString(), JsonConvert.DeserializeObject <StringExpression>(JsonConvert.SerializeObject(str, settings: settings), settings: settings).ToString()); var(result, error) = str.TryGetValue(data); Assert.Equal("test", result); Assert.Null(error); str = new StringExpression("=test"); Assert.Equal("=test", str.ExpressionText); Assert.Null(str.Value); Assert.Equal(str.ToString(), JsonConvert.DeserializeObject <StringExpression>(JsonConvert.SerializeObject(str, settings: settings), settings: settings).ToString()); (result, error) = str.TryGetValue(data); Assert.Equal("joe", result); Assert.Null(error); str = new StringExpression("Hello ${test}"); Assert.Equal("=`Hello ${test}`", str.ExpressionText); Assert.Null(str.Value); Assert.Equal(str.ToString(), JsonConvert.DeserializeObject <StringExpression>(JsonConvert.SerializeObject(str, settings: settings), settings: settings).ToString()); (result, error) = str.TryGetValue(data); Assert.Equal("Hello joe", result); Assert.Null(error); // slashes are the chars str = new StringExpression("c:\\test\\test\\test"); (result, error) = str.TryGetValue(data); Assert.Equal("c:\\test\\test\\test", result); Assert.Null(error); // tabs are the chars str = new StringExpression("c:\test\test\test"); (result, error) = str.TryGetValue(data); Assert.Equal("c:\test\test\test", result); Assert.Null(error); // test backtick in stringExpression str = new StringExpression("test `name"); Assert.Equal("test `name", str.TryGetValue(data).Value); str = new StringExpression("test //`name"); Assert.Equal("test //`name", str.TryGetValue(data).Value); }
internal static string GetValueOrNull(this StringExpression expression, DialogStateManager state) { if (expression != null) { var(value, valueError) = expression.TryGetValue(state); if (valueError != null) { throw new InvalidOperationException($"Expression evaluation resulted in an error. Expression: {expression.ExpressionText}. Error: {valueError}"); } return(value as string); } return(null); }
private string GetValueOrNull(DialogContext dc, StringExpression stringExpression) { if (stringExpression != null) { var(value, valueError) = stringExpression.TryGetValue(dc.State); if (valueError != null) { throw new Exception($"Expression evaluation resulted in an error. Expression: {stringExpression.ExpressionText}. Error: {valueError}"); } return(value as string); } return(null); }