csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
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
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);
|
|
}
|
|
}
|