committed by
GitHub
2 changed files with 40 additions and 1 deletions
@ -0,0 +1,39 @@ |
|||||
|
using System; |
||||
|
using System.Collections; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Reflection; |
||||
|
using Avalonia.Animation.Easings; |
||||
|
using Avalonia.Base.UnitTests.Rendering; |
||||
|
using Avalonia.Rendering; |
||||
|
using Avalonia.Rendering.Composition; |
||||
|
using Avalonia.Rendering.Composition.Expressions; |
||||
|
using Avalonia.Rendering.Composition.Server; |
||||
|
using Avalonia.Threading; |
||||
|
using Avalonia.UnitTests; |
||||
|
using Xunit; |
||||
|
using Xunit.Sdk; |
||||
|
|
||||
|
namespace Avalonia.Base.UnitTests.Composition; |
||||
|
|
||||
|
public class CompositionAnimationParserTests |
||||
|
{ |
||||
|
[Theory, |
||||
|
InlineData("Vector3(0.5+(4.0-0.5)* -2, 1, 0).X", -6.5)] |
||||
|
public void EvaluatesExpressionCorrectly(string expression, double value) |
||||
|
{ |
||||
|
var expr = ExpressionParser.Parse(expression); |
||||
|
var ctx = new ExpressionEvaluationContext |
||||
|
{ |
||||
|
ForeignFunctionInterface = BuiltInExpressionFfi.Instance, |
||||
|
}; |
||||
|
var res = expr.Evaluate(ref ctx); |
||||
|
double doubleRes; |
||||
|
if (res.Type == VariantType.Scalar) |
||||
|
doubleRes = res.Scalar; |
||||
|
else if (res.Type == VariantType.Double) |
||||
|
doubleRes = res.Double; |
||||
|
else |
||||
|
throw new Exception("Invalid result type: " + res.Type); |
||||
|
Assert.Equal(value, doubleRes); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue