AvaloniaListExtenionsTests.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. using System.Linq;
  2. using Avalonia.Collections;
  3. using Xunit;
  4. namespace Avalonia.Base.UnitTests.Collections
  5. {
  6. public class AvaloniaListExtenionsTests
  7. {
  8. [Fact]
  9. public void CreateDerivedList_Creates_Initial_Items()
  10. {
  11. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  12. var target = source.CreateDerivedList(x => new Wrapper(x));
  13. var result = target.Select(x => x.Value).ToList();
  14. Assert.Equal(source, result);
  15. }
  16. [Fact]
  17. public void CreateDerivedList_Handles_Add()
  18. {
  19. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  20. var target = source.CreateDerivedList(x => new Wrapper(x));
  21. source.Add(4);
  22. var result = target.Select(x => x.Value).ToList();
  23. Assert.Equal(source, result);
  24. }
  25. [Fact]
  26. public void CreateDerivedList_Handles_Insert()
  27. {
  28. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  29. var target = source.CreateDerivedList(x => new Wrapper(x));
  30. source.Insert(1, 4);
  31. var result = target.Select(x => x.Value).ToList();
  32. Assert.Equal(source, result);
  33. }
  34. [Fact]
  35. public void CreateDerivedList_Handles_Remove()
  36. {
  37. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  38. var target = source.CreateDerivedList(x => new Wrapper(x));
  39. source.Remove(2);
  40. var result = target.Select(x => x.Value).ToList();
  41. Assert.Equal(source, result);
  42. }
  43. [Fact]
  44. public void CreateDerivedList_Handles_RemoveRange()
  45. {
  46. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  47. var target = source.CreateDerivedList(x => new Wrapper(x));
  48. source.RemoveRange(1, 2);
  49. var result = target.Select(x => x.Value).ToList();
  50. Assert.Equal(source, result);
  51. }
  52. [Fact]
  53. public void CreateDerivedList_Handles_Move()
  54. {
  55. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  56. var target = source.CreateDerivedList(x => new Wrapper(x));
  57. source.Move(2, 0);
  58. var result = target.Select(x => x.Value).ToList();
  59. Assert.Equal(source, result);
  60. }
  61. [Theory]
  62. [InlineData(0, 2, 3)]
  63. [InlineData(0, 2, 4)]
  64. [InlineData(0, 2, 5)]
  65. [InlineData(0, 4, 4)]
  66. [InlineData(1, 2, 0)]
  67. [InlineData(1, 2, 4)]
  68. [InlineData(1, 2, 5)]
  69. [InlineData(1, 4, 0)]
  70. [InlineData(2, 2, 0)]
  71. [InlineData(2, 2, 1)]
  72. [InlineData(2, 2, 3)]
  73. [InlineData(2, 2, 4)]
  74. [InlineData(2, 2, 5)]
  75. [InlineData(4, 2, 0)]
  76. [InlineData(4, 2, 1)]
  77. [InlineData(4, 2, 3)]
  78. [InlineData(5, 1, 0)]
  79. [InlineData(5, 1, 3)]
  80. public void CreateDerivedList_Handles_MoveRange(int oldIndex, int count, int newIndex)
  81. {
  82. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3, 4, 5 });
  83. var target = source.CreateDerivedList(x => new Wrapper(x));
  84. source.MoveRange(oldIndex, count, newIndex);
  85. var result = target.Select(x => x.Value).ToList();
  86. Assert.Equal(source, result);
  87. }
  88. [Fact]
  89. public void CreateDerivedList_Handles_Replace()
  90. {
  91. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  92. var target = source.CreateDerivedList(x => new Wrapper(x));
  93. source[1] = 4;
  94. var result = target.Select(x => x.Value).ToList();
  95. Assert.Equal(source, result);
  96. }
  97. [Fact]
  98. public void CreateDerivedList_Handles_Clear()
  99. {
  100. var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
  101. var target = source.CreateDerivedList(x => new Wrapper(x));
  102. source.Clear();
  103. var result = target.Select(x => x.Value).ToList();
  104. Assert.Equal(source, result);
  105. }
  106. private class Wrapper
  107. {
  108. public Wrapper(int value)
  109. {
  110. Value = value;
  111. }
  112. public int Value { get; }
  113. }
  114. }
  115. }