AvaloniaObjectTests_Metadata.cs 2.0 KB

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