AvaloniaObjectTests_Metadata.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System.Linq;
  2. using System.Reactive.Linq;
  3. using Xunit;
  4. namespace Avalonia.Base.UnitTests
  5. {
  6. public class AvaloniaObjectTests_Metadata
  7. {
  8. public AvaloniaObjectTests_Metadata()
  9. {
  10. // Ensure properties are registered.
  11. AvaloniaProperty p;
  12. p = Class1.FooProperty;
  13. p = Class2.BarProperty;
  14. p = AttachedOwner.AttachedProperty;
  15. }
  16. [Fact]
  17. public void IsSet_Returns_False_For_Unset_Property()
  18. {
  19. var target = new Class1();
  20. Assert.False(target.IsSet(Class1.FooProperty));
  21. }
  22. [Fact]
  23. public void IsSet_Returns_False_For_Set_Property()
  24. {
  25. var target = new Class1();
  26. target.SetValue(Class1.FooProperty, "foo");
  27. Assert.True(target.IsSet(Class1.FooProperty));
  28. }
  29. [Fact]
  30. public void IsSet_Returns_False_For_Cleared_Property()
  31. {
  32. var target = new Class1();
  33. target.SetValue(Class1.FooProperty, "foo");
  34. target.SetValue(Class1.FooProperty, AvaloniaProperty.UnsetValue);
  35. Assert.False(target.IsSet(Class1.FooProperty));
  36. }
  37. private class Class1 : AvaloniaObject
  38. {
  39. public static readonly StyledProperty<string> FooProperty =
  40. AvaloniaProperty.Register<Class1, string>("Foo");
  41. }
  42. private class Class2 : Class1
  43. {
  44. public static readonly StyledProperty<string> BarProperty =
  45. AvaloniaProperty.Register<Class2, string>("Bar");
  46. }
  47. private class AttachedOwner
  48. {
  49. public static readonly AttachedProperty<string> AttachedProperty =
  50. AvaloniaProperty.RegisterAttached<AttachedOwner, Class1, string>("Attached");
  51. }
  52. }
  53. }