VisualNodeTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System;
  2. using Avalonia.Rendering.SceneGraph;
  3. using Avalonia.Utilities;
  4. using Avalonia.VisualTree;
  5. using Moq;
  6. using Xunit;
  7. namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph
  8. {
  9. public class VisualNodeTests
  10. {
  11. [Fact]
  12. public void Empty_Children_Collections_Should_Be_Shared()
  13. {
  14. var node1 = new VisualNode(Mock.Of<IVisual>(), null);
  15. var node2 = new VisualNode(Mock.Of<IVisual>(), null);
  16. Assert.Same(node1.Children, node2.Children);
  17. }
  18. [Fact]
  19. public void Adding_Child_Should_Create_Collection()
  20. {
  21. var node = new VisualNode(Mock.Of<IVisual>(), null);
  22. var collection = node.Children;
  23. node.AddChild(Mock.Of<IVisualNode>());
  24. Assert.NotSame(collection, node.Children);
  25. }
  26. [Fact]
  27. public void Empty_DrawOperations_Collections_Should_Be_Shared()
  28. {
  29. var node1 = new VisualNode(Mock.Of<IVisual>(), null);
  30. var node2 = new VisualNode(Mock.Of<IVisual>(), null);
  31. Assert.Same(node1.DrawOperations, node2.DrawOperations);
  32. }
  33. [Fact]
  34. public void Adding_DrawOperation_Should_Create_Collection()
  35. {
  36. var node = new VisualNode(Mock.Of<IVisual>(), null);
  37. var collection = node.DrawOperations;
  38. node.AddDrawOperation(RefCountable.Create(Mock.Of<IDrawOperation>()));
  39. Assert.NotSame(collection, node.DrawOperations);
  40. }
  41. [Fact]
  42. public void Cloned_Nodes_Should_Share_DrawOperations_Collection()
  43. {
  44. var node1 = new VisualNode(Mock.Of<IVisual>(), null);
  45. node1.AddDrawOperation(RefCountable.Create(Mock.Of<IDrawOperation>()));
  46. var node2 = node1.Clone(null);
  47. Assert.Same(node1.DrawOperations, node2.DrawOperations);
  48. }
  49. [Fact]
  50. public void Adding_DrawOperation_To_Cloned_Node_Should_Create_New_Collection()
  51. {
  52. var node1 = new VisualNode(Mock.Of<IVisual>(), null);
  53. var operation1 = RefCountable.Create(Mock.Of<IDrawOperation>());
  54. node1.AddDrawOperation(operation1);
  55. var node2 = node1.Clone(null);
  56. var operation2 = RefCountable.Create(Mock.Of<IDrawOperation>());
  57. node2.ReplaceDrawOperation(0, operation2);
  58. Assert.NotSame(node1.DrawOperations, node2.DrawOperations);
  59. Assert.Equal(1, node1.DrawOperations.Count);
  60. Assert.Equal(1, node2.DrawOperations.Count);
  61. Assert.Same(operation1.Item, node1.DrawOperations[0].Item);
  62. Assert.Same(operation2.Item, node2.DrawOperations[0].Item);
  63. }
  64. [Fact]
  65. public void DrawOperations_In_Cloned_Node_Are_Cloned()
  66. {
  67. var node1 = new VisualNode(Mock.Of<IVisual>(), null);
  68. var operation1 = RefCountable.Create(Mock.Of<IDrawOperation>());
  69. node1.AddDrawOperation(operation1);
  70. var node2 = node1.Clone(null);
  71. var operation2 = RefCountable.Create(Mock.Of<IDrawOperation>());
  72. node2.AddDrawOperation(operation2);
  73. Assert.Same(node1.DrawOperations[0].Item, node2.DrawOperations[0].Item);
  74. Assert.NotSame(node1.DrawOperations[0], node2.DrawOperations[0]);
  75. }
  76. }
  77. }