CompositionAnimationParserTests.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Reflection;
  5. using Avalonia.Animation.Easings;
  6. using Avalonia.Base.UnitTests.Rendering;
  7. using Avalonia.Rendering;
  8. using Avalonia.Rendering.Composition;
  9. using Avalonia.Rendering.Composition.Expressions;
  10. using Avalonia.Rendering.Composition.Server;
  11. using Avalonia.Threading;
  12. using Avalonia.UnitTests;
  13. using Xunit;
  14. using Xunit.Sdk;
  15. namespace Avalonia.Base.UnitTests.Composition;
  16. public class CompositionAnimationParserTests
  17. {
  18. [Theory,
  19. InlineData("Vector3(0.5+(4.0-0.5)* -2, 1, 0).X", -6.5)]
  20. public void EvaluatesExpressionCorrectly(string expression, double value)
  21. {
  22. var expr = ExpressionParser.Parse(expression);
  23. var ctx = new ExpressionEvaluationContext
  24. {
  25. ForeignFunctionInterface = BuiltInExpressionFfi.Instance,
  26. };
  27. var res = expr.Evaluate(ref ctx);
  28. double doubleRes;
  29. if (res.Type == VariantType.Scalar)
  30. doubleRes = res.Scalar;
  31. else if (res.Type == VariantType.Double)
  32. doubleRes = res.Double;
  33. else
  34. throw new Exception("Invalid result type: " + res.Type);
  35. Assert.Equal(value, doubleRes);
  36. }
  37. }