AvaloniaListExtenionsTests.cs 4.3 KB

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