StyledPropertyTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using Xunit;
  3. namespace Avalonia.Base.UnitTests
  4. {
  5. public class StyledPropertyTests
  6. {
  7. [Fact]
  8. public void AddOwnered_Property_Should_Equal_Original()
  9. {
  10. var p1 = new StyledProperty<string>(
  11. "p1",
  12. typeof(Class1),
  13. typeof(Class1),
  14. new StyledPropertyMetadata<string>());
  15. var p2 = p1.AddOwner<Class2>();
  16. Assert.Equal(p1, p2);
  17. Assert.Equal(p1.GetHashCode(), p2.GetHashCode());
  18. Assert.True(p1 == p2);
  19. }
  20. [Fact]
  21. public void AddOwnered_Property_Should_Be_Same()
  22. {
  23. var p1 = new StyledProperty<string>(
  24. "p1",
  25. typeof(Class1),
  26. typeof(Class1),
  27. new StyledPropertyMetadata<string>());
  28. var p2 = p1.AddOwner<Class2>();
  29. Assert.Same(p1, p2);
  30. }
  31. [Fact]
  32. public void Default_GetMetadata_Cannot_Be_Changed()
  33. {
  34. var p1 = new StyledProperty<string>(
  35. "p1",
  36. typeof(Class1),
  37. typeof(Class1),
  38. new StyledPropertyMetadata<string>());
  39. var metadata = p1.GetMetadata<Class1>();
  40. Assert.Throws<InvalidOperationException>(() => metadata.Merge(new StyledPropertyMetadata<string>(), p1));
  41. }
  42. [Fact]
  43. public void AddOwnered_GetMetadata_Cannot_Be_Changed()
  44. {
  45. var p1 = new StyledProperty<string>(
  46. "p1",
  47. typeof(Class1),
  48. typeof(Class1),
  49. new StyledPropertyMetadata<string>());
  50. var p2 = p1.AddOwner<Class2>();
  51. var metadata = p2.GetMetadata<Class2>();
  52. Assert.Throws<InvalidOperationException>(() => metadata.Merge(new StyledPropertyMetadata<string>(), p2));
  53. }
  54. private class Class1 : AvaloniaObject
  55. {
  56. }
  57. private class Class2 : AvaloniaObject
  58. {
  59. }
  60. }
  61. }