BindingExpressionTests.Obsolete.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System.Reactive.Linq;
  2. using Avalonia.Data;
  3. using Avalonia.Markup.Xaml.MarkupExtensions;
  4. using Xunit;
  5. #nullable enable
  6. #pragma warning disable CS0618 // Type or member is obsolete
  7. namespace Avalonia.Base.UnitTests.Data.Core;
  8. public abstract partial class BindingExpressionTests
  9. {
  10. public partial class Reflection
  11. {
  12. [Fact]
  13. public void Obsolete_Initiate_Method_Produces_Observable_With_Correct_Target_Type()
  14. {
  15. // Issue #15081
  16. var viewModel = new ViewModel { DoubleValue = 42.5 };
  17. var target = new TargetClass { DataContext = viewModel };
  18. var binding = new Binding(nameof(viewModel.DoubleValue));
  19. var instanced = binding.Initiate(target, TargetClass.StringProperty);
  20. Assert.NotNull(instanced);
  21. var value = instanced.Observable.First();
  22. Assert.Equal("42.5", value);
  23. }
  24. }
  25. public partial class Compiled
  26. {
  27. [Fact]
  28. public void Obsolete_Initiate_Method_Produces_Observable_With_Correct_Target_Type()
  29. {
  30. // Issue #15081
  31. var viewModel = new ViewModel { DoubleValue = 42.5 };
  32. var target = new TargetClass { DataContext = viewModel };
  33. var path = CompiledBindingPathFromExpressionBuilder.Build<ViewModel, double>(x => x.DoubleValue, true);
  34. var binding = new CompiledBindingExtension(path);
  35. var instanced = binding.Initiate(target, TargetClass.StringProperty);
  36. Assert.NotNull(instanced);
  37. var value = instanced.Observable.First();
  38. Assert.Equal("42.5", value);
  39. }
  40. }
  41. }