A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

39 lines
1.2 KiB

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);
}
}